Télécharger un fichier en utilisant une dll.

Download a file using a dll.

urlmon.dll

Voir version :

Pas de dépendances

Télécharger :

#include <windows.h>
#include <tchar.h>
#include <stdio.h>

#define URL _T("http://fvirtman.free.fr/index.html") // Url du fichier distant a recuperer
#define LOC _T("c:\\plouf.html") // Nom du fichier local qui sera cree

// Type pointeur sur fonction 'URLDownloadToFile()'
typedef HRESULT (WINAPI *DF)(LPVOID,LPCTSTR,LPCTSTR,DWORD,LPVOID);

int main(void)
{
    DF df;
    HMODULE hUrl;
    if(!(hUrl = LoadLibrary(_T("urlmon.dll"))))
    {
        printf("\nEchec LoadLibrary() !\n");
        return 1;
    }
#ifdef UNICODE
    if(!(df = (DF)GetProcAddress(hUrl, "URLDownloadToFileW")))
#else
    if(!(df = (DF)GetProcAddress(hUrl, "URLDownloadToFileA")))
#endif
    {
        printf("\nEchec GetProcAddress() !\n");  
        FreeLibrary(hUrl);
        return 2;
    }
    printf("\nTelechargement de %s ...", URL);
    if(df(0, URL, LOC, 0, 0))
    {
        printf("\nEchec URLDownloadToFile() !\n");  
        FreeLibrary(hUrl);
        return 3;
    }
    _tprintf(_T("\nLe fichier a ete copie ici: %s\n"), LOC);      
    FreeLibrary(hUrl);  
    return 0;
}




Commentaires


Voir l'exemple précédent sur le téclargement de fichier avec l'API Windows.
Cette fois ci, nous faisons la meme chose, mais sans lib : nous allons utiliser la dll systeme urlmon.dll

Nous chargeons la dll grace a LoadLibrary
Puis nous récuperons l'adresse de la fonction URLDownloadToFileA dans la dll.
Note : la A signifie que nous travaillons avec des char. la version URLDownloadToFileW existe aussi et permet de travailler avec des wchar_t 
(pour l'unicode, les fichiers chinois par exemple)

Il suffit ensuite d'appeler la fonction grace au pointeur de fonction aquis.

Ne pas oublier de relacher la dll par la suite grace a FreeLibrary.

--------- Special thanks a Magma. ---------