Ressourcen aus dem Internet herunterladen



  • Hi,
    ich möchte Ressourcen von einer Seite herunterladen, jedoch kann bekomme ich von
    meiner Programm immer den Fehlercode 997 (bedeutet: Overlapped I/O operation is in progress.) zurückgeliefert, wenn ich versuche eine Url zu öffnen. Ich poste mal lieber gleich den Code:

    #include <windows.h>
    #include <wininet.h>
    #include <cstdio>
    
    #define URL TEXT( "http://www.kraehseite.de/cgi-bin/wpz.pl" )
    
    int main ()
    {
    
    	/* Alle verwendeten Variablen */
    	HINTERNET	hIntSession			= NULL;
    	DWORD		dwFlags				= 0;
    	char		szBuffer[500]		= "";
    	DWORD		nLength				= 500;
    	DWORD		nNumberOfBytesRead	= 0;
    
    	/* Internet Status abfragen */
    	InternetGetConnectedState( &dwFlags, NULL);
    
    	/* Internet Status ausgeben */
    	if (dwFlags & INTERNET_CONNECTION_CONFIGURED)
    		puts( "INTERNET_CONNECTION_CONFIGURED" );
    	if (dwFlags & INTERNET_CONNECTION_LAN)
    		puts( "INTERNET_CONNECTION_LAN" );
    	if (dwFlags & INTERNET_CONNECTION_MODEM)
    		puts( "INTERNET_CONNECTION_MODEM" );
    	if (dwFlags & INTERNET_CONNECTION_OFFLINE)
    		puts( "INTERNET_CONNECTION_OFFLINE" );
    	if (dwFlags & INTERNET_CONNECTION_PROXY)
    		puts( "INTERNET_CONNECTION_PROXY" );
    	if (dwFlags & INTERNET_RAS_INSTALLED)
    		puts( "INTERNET_RAS_INSTALLED" );
    
    	/* Internet Session starten */
    	if (NULL == (hIntSession = InternetOpen( "Microsoft Internet Explorer",
    											 INTERNET_OPEN_TYPE_PRECONFIG,
    											 NULL, NULL, INTERNET_FLAG_ASYNC )))
    	{
    		printf( "A%d\n", GetLastError() );
    		return -1;
    	} // if
    
    	/* Seite öffnen */
    	if (NULL == (hIntSession = InternetOpenUrl( hIntSession, URL, NULL, -1L,
    												INTERNET_FLAG_NEED_FILE, 0 )))
    	{
    		printf( "B%d\n", GetLastError() );
    		InternetCloseHandle( hIntSession );
    		return -1;
    	} // if
    
    	/* Daten lesen - *uff* soweit so gut */
    	if (!InternetReadFile( hIntSession, (void*)szBuffer, nLength, &nNumberOfBytesRead ))
    	{
    		printf( "C%d\n", GetLastError() );
    		InternetCloseHandle( hIntSession );
    		return -1;
    	} // if
    
    	/* Handles wieder schließen */
    	if (!InternetCloseHandle( hIntSession ))
    		return -1;
    
    	return 0;
    
    }
    

    Ich lade hier zwar pauschal 500 Bytes runter aber das dürfte auch erstmal für disen Fehler ohne Bedeutung sein, und ich ändere das auch wenn das Problem gelöst ist. Die Fehlermeldung lautet nun genau: "B997", also tritt der Fehler bei InternetOpenUrl auf. Leider kann ich mir unter der oben genannten Fehlermeldung überhauptnichts vorstellen.
    Danke schon im voraus.



  • Ich kann mir unter der Fehlerangabe auch nichts vorstellen, versuch doch mal mit FormatMessage mehr heraus zu bekommen. U.U. gibt es einen deutsche Fehlerbeschreibung. FormatMessage benutzt einen Fehlercode von GetLastError um die Nachricht zu erzeugen.

    FormatMessage:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/formatmessage.asp



  • Schau dir INTERNET_FLAG_ASYNC nochmal genau an...


Anmelden zum Antworten