Ver Mensaje Individual
  #5  
Antiguo 04-05-2010
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Reputación: 16
lmpadron Va por buen camino
Duda

Hola
Este codigo fue posteado por escafandra respondiendole a Yelian en este hilo al probarlo me surgen las siguientes dudas
1- Donde pongo la primera parte del codigo ???
2- Al correr el programa me devuelve los siguientes errores

[C++ Error] Unit1.cpp(89): E2268 Call to undefined function 'URLDownloadToFile'
[C++ Warning] Unit1.cpp(90): W8004 'R' is assigned a value that is never used

A continuacion les pongo el codigo

Primera parte esta es la que no me queda clara dodne ponerlo, por lo tanto lo puse debajo de los #include
Código:
//---------------------------------------------------------------------------
bool Authenticate(HWND hWnd, char *URL)
{
   HINTERNET hOpenHandle,  hConnectHandle, hResourceHandle;
   DWORD dwError, dwErrorCode;
   char c;
   URL_COMPONENTS URL_C = {sizeof(URL_COMPONENTS)};
   URL_C.lpszScheme = &c;
   URL_C.dwSchemeLength = 1;
   URL_C.lpszHostName = &c;
//   URL_C.dwHostNameLength = 0;
   URL_C.lpszUserName  = &c;
//   URL_C.dwUserNameLength = 0;
   URL_C.lpszPassword = &c;
//   URL_C.dwPasswordLength = 0;
   URL_C.lpszUrlPath = &c;
//   URL_C.dwUrlPathLength = 0;
   URL_C.lpszExtraInfo = &c;
//   URL_C.dwExtraInfoLength = 0;

   InternetCrackUrl(URL, strlen(URL), ICU_DECODE, &URL_C);

   URL_C.lpszScheme = new char[URL_C.dwSchemeLength];
   URL_C.lpszHostName = new char[URL_C.dwHostNameLength];
   URL_C.lpszUserName  = new char[URL_C.dwUserNameLength];
   URL_C.lpszPassword = new char[URL_C.dwPasswordLength];
   URL_C.lpszUrlPath = new char[URL_C.dwUrlPathLength];
   URL_C.lpszExtraInfo = new char[URL_C.dwExtraInfoLength];

   InternetCrackUrl(URL, strlen(URL), ICU_DECODE, &URL_C);

   hOpenHandle = InternetOpen("Agent", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

   hConnectHandle = InternetConnect(hOpenHandle,
                                 URL_C.lpszHostName,
                                 INTERNET_INVALID_PORT_NUMBER,
                                 NULL,
                                 NULL,
                                 INTERNET_SERVICE_HTTP,
                                 0,0);

   hResourceHandle = HttpOpenRequest(hConnectHandle, "GET",
                                  URL_C.lpszUrlPath,
                                  NULL, NULL, NULL,
                                  INTERNET_FLAG_KEEP_CONNECTION, 0);

   delete URL_C.lpszScheme;
   delete URL_C.lpszHostName;
   delete URL_C.lpszUserName;
   delete URL_C.lpszPassword;
   delete URL_C.lpszUrlPath;
   delete URL_C.lpszExtraInfo;
   
   for(int n=0; n<2; n++){
      HttpSendRequest(hResourceHandle, NULL, 0, NULL, 0);
      dwErrorCode = hResourceHandle ? ERROR_SUCCESS : GetLastError();
      dwError = InternetErrorDlg(hWnd, hResourceHandle, dwErrorCode,
                           FLAGS_ERROR_UI_FILTER_FOR_ERRORS |
                           FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS |
                           FLAGS_ERROR_UI_FLAGS_GENERATE_DATA,
                           NULL);
      if (dwError != ERROR_INTERNET_FORCE_RETRY)
        break;
   }
   return (dwError != ERROR_INTERNET_FORCE_RETRY);}
Segunda parte esto va en el boton y los errores que me devuelve son de aqui

Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    char File[] = "http://www.terawiki.clubdelphi.com/CPPBuilderWin32/Ejemplos/?download=Otro+Usuario.rar";
    HRESULT R;

    Authenticate(Handle, File);
    R = URLDownloadToFile(0, File, "C:\\File.rar", 0, 0);
}
tercera parte estas son las librerias a incluir

Código:
#pragma link "$(BCB)\\lib\\PSDK\\Urlmon.lib"
#pragma link "$(BCB)\\lib\\PSDK\\Wininet.lib"
Espero me puedan explicar un poco !!!
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita