Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Telecharger un fichier FACILEMENT en C++

27 views
Skip to first unread message

Jordan

unread,
Jun 25, 2009, 6:57:15 AM6/25/09
to
Bonjour,
Je cherche un bout de code qui me permettrai de télécharger un fichier
en c++. La seul lib qui semblai simple est plutôt impossible a
installer, UrlMon. Il manque tout le temps un fichier, d'abord
msxml.h, après log4cxx, relou.
Je code avec CodeBlocks une appli win32.
Merci d'avance.

Christian ASTOR

unread,
Jun 25, 2009, 9:58:47 AM6/25/09
to

Le plus simple est avec URLDownloadToFile()

Jordan

unread,
Jun 25, 2009, 12:18:59 PM6/25/09
to

Oui c'est sur mais j'ai un gros probleme avec la librairie urlmon.

Jordan

unread,
Jun 25, 2009, 1:47:20 PM6/25/09
to

J'ai l'impression que cette librairie ne fonctionne pas avec Code
Blocks.
Help me !!!!

Christian ASTOR

unread,
Jun 25, 2009, 1:53:33 PM6/25/09
to

La lib, c'est urlmon.lib. Les includes plutôt ?
Donc soir tu mets à jour le SDK Windows, soit tu l'appelles
dynamiquement (pas besoin de lib ou include particulier dans ce cas).
Par exemple =>

#define UNICODE
#define _UNICODE

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

int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
typedef HRESULT (WINAPI* PUDTF)
( LPUNKNOWN caller,
LPCWSTR szURL,
LPCWSTR szFileName,
DWORD dwReserved,
LPBINDSTATUSCALLBACK callback );

CoInitialize(NULL);
HINSTANCE hDLL = LoadLibrary(TEXT("urlmon.dll"));
if (hDLL)
{
PUDTF pURLDownload = (PUDTF)GetProcAddress(hDLL,
"URLDownloadToFileW");
if (pURLDownload != NULL)
{
HRESULT hr = pURLDownload(NULL, TEXT("http://portfolio.sudpresse.be/
main.php?g2_view=core.DownloadItem&g2_itemId=222378&g2"), TEXT("./
test.jpg"), 0, NULL );
if (SUCCEEDED(hr))
MessageBox(NULL, TEXT("File Downloaded"), TEXT("Information"),
MB_OK | MB_ICONINFORMATION);
}
FreeLibrary(hDLL);
}
return 0;
}

Jordan

unread,
Jun 25, 2009, 2:55:38 PM6/25/09
to
On 25 juin, 19:53, Christian ASTOR <casto...@club-internet.fr> wrote:
> On 25 juin, 19:47, Jordan <jordan...@gmail.com> wrote:
>
>
>
> > On 25 juin, 18:18, Jordan <jordan...@gmail.com> wrote:
>
> > > On 25 juin, 15:58, Christian ASTOR <casto...@club-internet.fr> wrote:
>
> > > > On 25 juin, 12:57, Jordan <jordan...@gmail.com> wrote:
>
> > > > > Bonjour,
> > > > > Je cherche un bout de code qui me permettrai de télécharger unfichier
> > > > > enc++. La seul lib qui semblai simple est plutôt impossible a
> > > > > installer, UrlMon. Il manque tout le temps unfichier, d'abord

Mon compilo me renvoi une erreur : `LPBINDSTATUSCALLBACK' has not been
declared

Bertrand Lenoir-Welter

unread,
Jun 25, 2009, 4:48:11 PM6/25/09
to
Salut

Si �a peut aider, j'ai �crit un petit exe compil� avec AutoIt qui
t�l�charge un fichier depuis une URL. Fen�tre minimaliste avec juste une
barre de progression et un bouton "Stop" ; on passe en argument n� 1
l'URL et en n� 2 le nom du fichier sur disque. Inconv�nient : c'est un
programme externe, donc � g�rer comme tel. Avantage : �a marche. C'est
libre de droits. Tu peux r�cup�rer l'exe depuis
http://www.galaad.net/Download.exe et le code source AutoIt depuis
http://www.galaad.net/Download.au3

Jordan

unread,
Jun 25, 2009, 5:16:41 PM6/25/09
to
On 25 juin, 22:48, Bertrand Lenoir-Welter <bertrand-dot-2008-at-galaad-
dot-net> wrote:
> Salut
>
> Si ça peut aider, j'ai écrit un petit exe compilé avec AutoIt qui
> télécharge un fichier depuis une URL. Fenêtre minimaliste avec juste une

> barre de progression et un bouton "Stop" ; on passe en argument n° 1
> l'URL et en n° 2 le nom du fichier sur disque. Inconvénient : c'est un
> programme externe, donc à gérer comme tel. Avantage : ça marche. C'est
> libre de droits. Tu peux récupérer l'exe depuishttp://www.galaad.net/Download.exeet le code source AutoIt depuishttp://www.galaad.net/Download.au3

Merci mais je préfère quelque chose que je puisse mettre dans mon
code, c'est pour faire la mise a jour d'un logiciel.
Personne ne peu m'aider???

Bertrand Lenoir-Welter

unread,
Jun 25, 2009, 5:24:33 PM6/25/09
to
Jordan :
> Merci mais je pr�f�re quelque chose que je puisse mettre dans mon

> code, c'est pour faire la mise a jour d'un logiciel.

C'est pr�cis�ment � �a que �a me sert.

Christian ASTOR

unread,
Jun 25, 2009, 5:34:59 PM6/25/09
to
Jordan wrote:

> Mon compilo me renvoi une erreur : `LPBINDSTATUSCALLBACK' has not been
> declared

C'est d�fini dans urlmon.h (ci-dessous)
Mettre � jour le SDK depuis MS et/ou changer de compilo...
Sinon, les autres m�thodes simples sont avec IHTMLDocument2, comme dans
la KB292485
ou par Wininet (InternetReadFile() ou FtpGetFile() par FTP)


MIDL_INTERFACE("79eac9c1-baf9-11ce-8c82-00aa004ba90b")
IBindStatusCallback : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE OnStartBinding(
/* [in] */ DWORD dwReserved,
/* [in] */ __RPC__in_opt IBinding *pib) = 0;

virtual HRESULT STDMETHODCALLTYPE GetPriority(
/* [out] */ __RPC__out LONG *pnPriority) = 0;

virtual HRESULT STDMETHODCALLTYPE OnLowResource(
/* [in] */ DWORD reserved) = 0;

virtual HRESULT STDMETHODCALLTYPE OnProgress(
/* [in] */ ULONG ulProgress,
/* [in] */ ULONG ulProgressMax,
/* [in] */ ULONG ulStatusCode,
/* [unique][in] */ __RPC__in_opt LPCWSTR szStatusText) = 0;

virtual HRESULT STDMETHODCALLTYPE OnStopBinding(
/* [in] */ HRESULT hresult,
/* [unique][in] */ __RPC__in_opt LPCWSTR szError) = 0;

virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetBindInfo(
/* [out] */ DWORD *grfBINDF,
/* [unique][out][in] */ BINDINFO *pbindinfo) = 0;

virtual /* [local] */ HRESULT STDMETHODCALLTYPE OnDataAvailable(
/* [in] */ DWORD grfBSCF,
/* [in] */ DWORD dwSize,
/* [in] */ FORMATETC *pformatetc,
/* [in] */ STGMEDIUM *pstgmed) = 0;

virtual HRESULT STDMETHODCALLTYPE OnObjectAvailable(
/* [in] */ __RPC__in REFIID riid,
/* [iid_is][in] */ __RPC__in_opt IUnknown *punk) = 0;

};

typedef __RPC_unique_pointer IBindStatusCallback *LPBINDSTATUSCALLBACK;

Jordan

unread,
Jun 25, 2009, 6:42:13 PM6/25/09
to
On 25 juin, 23:34, Christian ASTOR <casto...@club-internet.fr> wrote:
> Jordan wrote:
> > Mon compilo me renvoi une erreur : `LPBINDSTATUSCALLBACK' has not been
> > declared
>
> C'est défini dans urlmon.h (ci-dessous)
> Mettre à jour le SDK depuis MS et/ou changer de compilo...
> Sinon, les autres méthodes simples sont avec IHTMLDocument2, comme dans

J'ai essayé avec DEV C++, rien ne marche c'est encore pire que code
clocks, j'ai essayé visual studio 2008, il arrive a compiler mais le
programme ne fait rien.

Jordan

unread,
Jun 25, 2009, 6:46:06 PM6/25/09
to

Erreur de ma par, avec visual studio ca fonctionne.

Jordan

unread,
Jun 25, 2009, 7:29:21 PM6/25/09
to

Sinon pas possible de faire plus court sous visual studio vu que la
lib urlmon marche?

Christian ASTOR

unread,
Jun 26, 2009, 1:56:40 AM6/26/09
to
Jordan wrote:

> Sinon pas possible de faire plus court sous visual studio vu que la
> lib urlmon marche?

Tu appelles juste :
CoInitialize(NULL);
suivi de
URLDownloadToFile(...)

en ajoutant au d�but :

#include <urlmon.h>
#pragma comment(lib, "Urlmon")

C'est tout.

Jordan

unread,
Jun 26, 2009, 5:33:37 AM6/26/09
to
On 26 juin, 07:56, Christian ASTOR <casto...@club-internet.fr> wrote:
> Jordan wrote:
> > Sinon pas possible de faire plus court sous visual studio vu que la
> > lib urlmon marche?
>
> Tu appelles juste :
> CoInitialize(NULL);
> suivi de
> URLDownloadToFile(...)
>
> en ajoutant au début :

>
> #include <urlmon.h>
> #pragma comment(lib, "Urlmon")
>
> C'est tout.

Merci de ta patience, mais j'ai un dernier problème (qui n'en étai pas
un sous code blocks :D) , j'ai fait ceci :
#include <urlmon.h>

int main(int argc, char* argv[])
{
CoInitialize(NULL);
URLDownloadToFile (NULL, LPCWSTR(argv[1]), LPCWSTR(argv[2]), 0,
NULL );

return 0;
}
Mais maintenant il me dit error LNK2019: unresolved external symbol
_WinMain@16 referenced in function ___tmainCRTStartup
C'est surement lié a argv[]
Comment le résoudre?
Merci encore pour ta patience :D.

Sylvain SF

unread,
Jun 26, 2009, 6:05:33 AM6/26/09
to
Jordan a �crit :
>
> Merci de ta patience, mais j'ai un dernier probl�me (qui n'en �tai

> pas un sous code blocks :D) , j'ai fait ceci :
>
> int main(int argc, char* argv[]) { ... } Mais maintenant il me dit

> error LNK2019: unresolved external symbol _WinMain@16 referenced in
> function ___tmainCRTStartup C'est surement li� a argv[]

ou c'est li� � l'absence de _WInMain (comme indiqu�).

> Comment le r�soudre?

selon ton post du 25/06 @ 20:55, tu utilisais:

>> int APIENTRY _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)

tu connais donc la r�ponse.

SF.

Jordan

unread,
Jun 26, 2009, 12:30:03 PM6/26/09
to
On 26 juin, 12:05, Sylvain SF <sylv...@boiteaspam.info> wrote:
> Jordan a écrit :

>
>
>
> > Merci de ta patience, mais j'ai un dernier problème (qui n'en étai
> > pas un sous code blocks :D) , j'ai fait ceci :
>
> > int main(int argc, char* argv[]) { ... } Mais maintenant il me dit
> > error LNK2019: unresolved external symbol _WinMain@16 referenced in
> > function ___tmainCRTStartup C'est surement lié a argv[]
>
> ou c'est lié à l'absence de _WInMain (comme indiqué).
>
> > Comment le résoudre?

>
> selon ton post du 25/06 @ 20:55, tu utilisais:
>
> >> int APIENTRY _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
>
> tu connais donc la réponse.
>
> SF.

Avec ceci de nouvelles erreurs apparaissent.
Bon je résume.
Je cherche a faire un truc qui télécharge un fichier.
J'ai essayer pendant 3 jours tout ce que j'ai pu trouver sur internet
mais a chaque foie une erreur apparait ou un problème ce pose comme
par exemple absence de lib ou erreur dans la lib ou impossible de
récupérer les paramètres mis a l'exécutable ou erreur de syntaxe, et
j'en passe.
Donc on vas faire comme si rien n'a été écrit au dessus.
Est -t-il possible de faire un logiciel fantôme qui télécharge le
fichier spécifié en paramètre? Si oui est ce possible avec code blocks
(Ca serai vraiment vraiment cool)?
Merci d'avance.

Steph

unread,
Jun 26, 2009, 3:18:10 PM6/26/09
to
"Jordan" <jord...@gmail.com> a �crit dans le message de news:
1cd7924a-5ec8-497b...@l5g2000vbp.googlegroups.com...

> Avec ceci de nouvelles erreurs apparaissent.

Quelles erreurs ?
C'est ce qui soi-disant marchait au-dessus, et tu as chang� le WinMain en
main (GUI et Console, c'est pas pareil)

>Donc on vas faire comme si rien n'a �t� �crit au dessus.
>Est -t-il possible de faire un logiciel fant�me qui t�l�charge le
>fichier sp�cifi� en param�tre?

Le code qu'on t'a donn� marche parfaitement, sur toutes les versions de
Visual Studio depuis des ann�es.
Mais si tu ne configures pas ton IDE comme il faut et ne mets pas � jour ton
environnement de D�v (SDK surtout), rien ne marchera comme voulu...


Jordan

unread,
Jun 26, 2009, 6:14:56 PM6/26/09
to
Alors je me suis remis sur le truc, j'ai jamais utiliser visual
studio, j'ai un peu du mal.
J'ai le script suivant qui fonctionne :
#include <urlmon.h>
#include <windows.h>
#include <tchar.h>

int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{

CoInitialize(NULL);
URLDownloadToFile (NULL, TEXT("http://monurl/fichier.ext"), TEXT
("destination.ext"), 0, NULL );

return 0;
}
Maintenant j'aimerai a la place de TEXT("http://monurl/fichier.ext")
et TEXT("destination.ext") mettre quelque chose qui prendrai en compte
les paramètres passé au programme. Jusqu'à maintenant je faisais ca
avec argv mais la il semblerai que ce soit différent, je ne comprend
pas du tout ceci : int APIENTRY _tWinMain(HINSTANCE hInstance,


HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)

J'ai toujours fait int main(int argc, char* argv[])
Merci d'avance.

Sylvain SF

unread,
Jun 26, 2009, 11:12:33 PM6/26/09
to
Jordan a �crit :

> Alors je me suis remis sur le truc, j'ai jamais utiliser visual
> studio, j'ai un peu du mal.

yaka utiliser autre chose.

> J'ai le script suivant qui fonctionne :

c'est un source ou un programme, pas un scipt.

> quelque chose qui prendrai en compte

> les param�tres pass� au programme. Jusqu'� maintenant je faisais ca
> avec argv mais la il semblerai que ce soit diff�rent, je ne comprend
> pas du tout ceci : [..] _tWinMain vs main

tu n'aurais oubli� de le dire plus t�t ??

le point d'entr� d'un programme *avec GUI* (avec _fen�tre_)
est _tWinMain, de tels programmes ne recoivent pas de param�tres
ligne de commande puisqu'ils n'interagissent pas avec une console
(mais uniquement leur _fen�tre_).
les programmes mode console utilisent le point d'entr�e main et
re�oivent les param�tres de la ligne de commande.

il convient donc simplement de choisir au d�part (lorsque l'on
cr�� le project) le bon mod�le, Studio cr�era le bon point d'entr�e.

�videmment choisir de cr�er une appli. console pour y coller
un WinMain ou une appli. window pour y coller un main est juste
une fa�on (un peu st�rile) de perdre son temps.

Sylvain.

Christian ASTOR

unread,
Jun 27, 2009, 1:56:22 AM6/27/09
to
Jordan wrote:
> Alors je me suis remis sur le truc, j'ai jamais utiliser visual
> studio, j'ai un peu du mal.
> J'ai le script suivant qui fonctionne :
> #include <urlmon.h>
> #include <windows.h>
> #include <tchar.h>
>
> int APIENTRY _tWinMain(HINSTANCE hInstance,
> HINSTANCE hPrevInstance,
> LPTSTR lpCmdLine,
> int nCmdShow)
> {
> CoInitialize(NULL);
> URLDownloadToFile (NULL, TEXT("http://monurl/fichier.ext"), TEXT
> ("destination.ext"), 0, NULL );
>
> return 0;
> }
> Maintenant j'aimerai a la place de TEXT("http://monurl/fichier.ext")
> et TEXT("destination.ext") mettre quelque chose qui prendrai en compte
> les param�tres pass� au programme. Jusqu'� maintenant je faisais ca
> avec argv mais la il semblerai que ce soit diff�rent

Par exemple =>

TCHAR sArg[260];
lstrcpy(sArg, __argv[1]);
URLDownloadToFile (NULL, sArg, TEXT("destination.ext"), 0, NULL );

Jordan

unread,
Jun 27, 2009, 9:08:00 AM6/27/09
to

Si c'est possible comment, car la pour l'instant il y a pas une
personne qui me parle de la même chose, et pour l'instant rien ne
marche.
Donc déjà si je veux quelque chose fantôme, que on ne voix pas de
fenêtre, il faut créer un projet console fenêtre ou autre chose?
En suite, en fonction de ca quel sera le prototype de la fonction
principal, int main, int winmain, autre chose, avec en paramètre quoi,
char* argv[], autre chose?
Après, dans l'instruction URLDownloadToFile je met quoi, argv[x], TEXT
(argv[x]), autre chose?
Merci d'avance.

Jordan

unread,
Jun 27, 2009, 12:52:06 PM6/27/09
to

S'il vous plait, vraiment besoin d'aide...

Christian ASTOR

unread,
Jun 27, 2009, 1:21:54 PM6/27/09
to
Jordan wrote:

> S'il vous plait, vraiment besoin d'aide...

Ben comme je t'ai dit au-dessus (__argv[1] sous Visual)
(CommandLineToArgvW() �galement)

Jordan

unread,
Jun 27, 2009, 4:05:47 PM6/27/09
to
> (CommandLineToArgvW() également)

J'ai essayé avec CommandLineToArgvW(), j'obtiens un warning a la
compilation et un jolie plantage a l'exécution. Voila le warning :
uninitialized local variable 'argv' used
Et voila le code :
#include "stdafx.h"
#include <urlmon.h>


int _tmain()
{
LPCWSTR *argv;
CommandLineToArgvW(*argv, NULL);
CoInitialize(NULL);
URLDownloadToFile (NULL, argv[1], TEXT("test.jpg"), 0, NULL );

return 0;
}

Christian ASTOR

unread,
Jun 27, 2009, 4:34:51 PM6/27/09
to
Jordan wrote:

> int _tmain()
> {
> LPCWSTR *argv;
> CommandLineToArgvW(*argv, NULL);

Avec ce code, heureusement que �a plante !
J'ai l'impression que tu programmes au pifom�tre...

Par ex =>

// On obtient les arguments dans le tableau pArgv
int nNbArgs;
LPWSTR* pArgv = CommandLineToArgvW(GetCommandLineW(), &nNbArgs);

Jordan

unread,
Jun 27, 2009, 5:07:51 PM6/27/09
to
Il semblerai que tout le problème réside dans une simple conversion
char* vers LPCWSTR.
Donc après quelque recherche j'ai fait ceci ;
LPCWSTR *param = wcsdup(A2W(__argv[1]));
URLDownloadToFile (NULL, param, TEXT("test.jpg"), 0, NULL );

Mais A2W est inconnu, normal sinon c'est pas drolle :D. Un .h doit
surement être inclue, mais je ne sais pas encore le quel.

Jordan

unread,
Jun 27, 2009, 5:53:48 PM6/27/09
to
Je pense etre sur la voie maintenant, mais un probleme est toujours
la, le programme plante. Voila mon code :
int _tmain()
{
LPCWSTR param = NULL;
WCHAR paramwchar[256];
MultiByteToWideChar(CP_ACP, 0, __argv[1], strlen(__argv[1])+1,
paramwchar, sizeof(paramwchar)/sizeof(paramwchar[0])); // Convertion
char* to LPCWSTR
param = paramwchar;
URLDownloadToFile (NULL, param, TEXT("test.jpg"), 0, NULL );

return 0;
}

Jordan

unread,
Jun 27, 2009, 6:17:59 PM6/27/09
to
Bon j'ai réussit. Deja tout ce qui est _tmain ou APIENTRY _tWinMain
fait planter le programme, donc je suis revenu a mon bon vieux main
comme j'ai toujours fait, et j'ai ajouter un A à URLDownloadToFile, ce
qui fait URLDownloadToFileA, et a partir de la on est en mesure
d'écrire un programme qui marche, soit :
int main()
{
URLDownloadToFileA (NULL, __argv[1], __argv[2], 0, NULL);
return 0;
}

Oulala c'est dur, je me sens trop blazé d'avoir passé 4 jours a
trouver ca. On est loin des 20ene de ligne des codes du début.
Voila. @+ pour de nouvelles aventures...

Christian ASTOR

unread,
Jun 27, 2009, 6:22:25 PM6/27/09
to
Jordan wrote:

> et a partir de la on est en mesure d'�crire un programme qui marche, soit :


> int main()
> {
> URLDownloadToFileA (NULL, __argv[1], __argv[2], 0, NULL);
> return 0;
> }

Tout est faux.
Mais si tu ne lis pas les r�ponses...

Steph

unread,
Jun 27, 2009, 7:03:42 PM6/27/09
to
"Jordan" <jord...@gmail.com> a �crit dans le message de news:
b3e2cc4f-9901-43c8...@g1g2000yqh.googlegroups.com...
>Bon j'ai r�ussit. Deja tout ce qui est _tmain ou APIENTRY _tWinMain

>fait planter le programme, donc je suis revenu a mon bon vieux main
>comme j'ai toujours fait, et j'ai ajouter un A � URLDownloadToFile, ce

>qui fait URLDownloadToFileA, et a partir de la on est en mesure
>d'�crire un programme qui marche, soit :

>int main()
>{
>URLDownloadToFileA (NULL, __argv[1], __argv[2], 0, NULL);
>return 0;
>}
>
>Oulala c'est dur, je me sens trop blaz� d'avoir pass� 4 jours a
>trouver ca. On est loin des 20ene de ligne des codes du d�but.

>Voila. @+ pour de nouvelles aventures...

Tu n'as rien r�ussi : � partir d'un bon code tu en es arriv� � un code tout
pourri :-)
Apparemment, tu n'as pas compris la diff�rence entre Unicode et Ansi et
comment configurer l'IDE.


Jordan

unread,
Jun 27, 2009, 8:07:38 PM6/27/09
to
On 28 juin, 00:22, Christian ASTOR <casto...@club-internet.fr> wrote:
>
> Tout est faux.
> Mais si tu ne lis pas les r ponses...

Oulala pardon j'ai fait plain d'erreur la, j'ai pas vu la 2eme page,
et je travaillai dans un projet consol, pffff...

> J'ai l'impression que tu programmes au pifom tre...

C'est un peu ca, je suis un peu perdu...

> Tout est faux.
Vrais :D

Par ex =>

> // On obtient les arguments dans le tableau pArgv
> int nNbArgs;
> LPWSTR* pArgv = CommandLineToArgvW(GetCommandLineW(), &nNbArgs);

Pour CommandLineToArgvW() il n'y a pas quelque chose a déclarer avan
ou un .h a appeler? Le compilo me dit identifier not found.
J'ai fait ceci :
#include "stdafx.h"
#include <urlmon.h>


int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow)
{

int nNbArgs;
LPWSTR* pArgv = CommandLineToArgvW(GetCommandLineW(), &nNbArgs);

URLDownloadToFile(NULL, pArgv[1], pArgv[2], 0, NULL);
return 0;
}

Christian ASTOR

unread,
Jun 26, 2009, 8:23:58 PM6/26/09
to
Jordan wrote:

> Pour CommandLineToArgvW() il n'y a pas quelque chose a d�clarer avan


> ou un .h a appeler? Le compilo me dit identifier not found.

C'est toujours dans la doc :
http://msdn.microsoft.com/en-us/library/bb776391(VS.85).aspx

Mais __argv[1] est bon aussi.
Ce qui ne se fait normalement pas est d'appeler en dur la version Ansi
URLDownloadToFileA()

Et tu as enlev� CoInitialize(), qui est n�cessaire pour ne pas que cela
plante sur certains environnements.

Jordan

unread,
Jun 27, 2009, 9:28:25 PM6/27/09
to
Génial, merci, merci, et encore merci, cette foie c'est sur, ca
fonctionne. Je poste quand meme le code, si ca peut aider :
#include "stdafx.h"
#include "downloader.h"
#include <urlmon.h> // linker urlmon.lib
#include <Shellapi.h> // linker Shell32.lib

int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{

int nParam;
LPWSTR* pArgv = CommandLineToArgvW(GetCommandLineW(),&nParam);
CoInitialize(NULL);


URLDownloadToFile(NULL, pArgv[1], pArgv[2], 0, NULL);
return 0;
}

@+

Sylvain SF

unread,
Jun 27, 2009, 9:36:03 PM6/27/09
to
Jordan a �crit :
> G�nial, merci, merci, et encore merci, cette foie c'est sur, ca
> fonctionne.

non �a peut gravement planter.

> int nParam;
> LPWSTR* pArgv = CommandLineToArgvW(GetCommandLineW(),&nParam);

tu penses que 'nParam' est l� pour faire joli ou devrait
servir � quelque chose ?

SF.

0 new messages