daten über http laden



  • hi,

    winsock is ne gute idee. solltest dich dann noch mit dem http protokoll auseinandersetzen und wissen was ein webbrowser dem server sendet um dateien zu bekommen (z.B. "GET /index.html HTTP/1.1").
    schau mal unter http://www.marc.marc-und-antje.de dort unter projekte, dort findest du eien server mit dem du sehen kannst was uebertragen wird wenn ein webbrowser/dein programm eine seite oder sonstiges anfordert.

    gruss
    msp



  • ...und es gibt noch die Möglichkeit über die Windows Internet-Funktionen:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/about_wininet.asp



  • Ich habe vorgestern genau das gemacht, was geeky vorschlägt.
    Ist ein kleines 50 Zeilen Proggy, das eine Datei einer URL saugt und im Temp-Ordner speichert.
    Wenn du den Code willst, mail einfach:
    SeppSchrot@t-online.de



  • werd mir das alles mal ankucken.
    danke einstweilen!



  • SeppSchrot schrieb:

    Ich habe vorgestern genau das gemacht, was geeky vorschlägt.
    Ist ein kleines 50 Zeilen Proggy, das eine Datei einer URL saugt und im Temp-Ordner speichert.
    Wenn du den Code willst, mail einfach:
    SeppSchrot@t-online.de

    OFFTOPIC->Argument = true;
    Copy´n Paste ist Mißt, wenn er später mal Detailreicher da einsteigen muß, z.B. um Referrer oder Cookie zu Übergeben, fängt er von vorne an, anstelle sein Wissen zu Ergänzen, also bitte bei diesen Einfachen sachen nicht die Sources durch das netz jagen, wir wollen gute Progger die lernen und nicht kopieren.
    OFFTOPIC->Argument = false;



  • *LOL*
    Er hat mir versichert, dass er das garantiert nicht einfach nur rüberkopiert.
    Dazu wäre der Code auch zu speziell.
    Aber wenn du selber sagst, es ist eine so einfache Sache, dann dürfte damals auch das "Hello World!"-Proggy nicht veröffentlicht werden dürfen.
    Ich bin bestimmt der letzte, der Anderen seine Hausaufgaben abnimmt.
    Aber wenn jemanden die Idee fehlt, wo er ansetzen soll, warum soll ich ihm kein laufendes Beispiel zeigen ...



  • @SeppSchrot

    Denke nochmal über deine Aussage nach und bedenke die Regeln des Forums sowie desen Sinn. Desweiteren bedenke mal das "Hello World" und viele andere "Tutorials" dokumentiert sind um zu lernen, und welche Komentare du in deinem Code hast. Glaub mir auch wenn er den Code durchgeht, wird er danach so schlau sein wie vorher. Des weiteren wird es für ihn dan mühsam sein jede Funktion über die MSDN zu erfragen um dessen Aufbau zu verstehen, würde er direkt über die MSDN alles erfragen als von deinem Code, so würde er per Direkt-Klick auch Infos über die Funktionen erhalten.
    Sicher ist es einfacher jetzt dein Code zu nehmen und ihn auch mal durch zu lesen, aber nur jetzt, nicht später, den da landet er entweder doch noch bei der MSDN oder er hat Glück und wieder einer sendet ihm Code zu.

    Wenn wir mehr von den leuten hätten die Code zusenden oder Posten, könnte jeder Anfänger sich bomben Progs zusammen basteln, bis der compiler keine fehler mehr ausgiebt (nach fragen im forum) und keine Ahnung von der materie haben. Soll das der Sinn sein, wohl kaum. Fragmente von Code, welche angeglichen werden müßen oder eine kleine speziale Aufgabe oder Trick zum teil wird, ist sicherlich gut und manchmal sogar für die FAQ brauchbar, aber Parts welche gut dokumentiert sind in Tutorials und der MSDN sollten vermieden werden.
    So das war mein Statement.



  • Hmm, also in den Forumregeln konnte ich darüber nichts finden.
    Außer dass ich jetzt weiß, dass ich für meine soziale Absicherung nicht das Forum belangen kann.
    Ich finde, du entmündigst den Fragesteller etwas zu sehr.
    Ich denke mal eher, wer sich wirklich mit dem Problem auseinandersetzen will, der liest sich auch die entsprechenden Seiten in der MSDN durch.
    Aber leider fehlt auch in der MSDN, so detailliert sie im einzelnen auch sein mag, viel zu oft einfach mal ein funktionierendes Beispiel.
    Aber ich will mich hier jetzt auch nicht rechtfertigen müssen, ehrlich gesagt.
    Ich sehe das jedenfalls nicht als Ausplaudern einer großen elitären Geheimwissenschaft an, wenn ich mal ne Antwort länger als 3 Worte gebe.

    PS: Mal von alledem abgesehen, hat der Threaderöffner sowieso nicht vor, davon allzuviel zu übernehmen. Schließlich handelt es sich bei meiner Lösung ja nicht um den Stein der Weisen. Aber er hat vielleicht doch eine Idee, mit welchem Weg er zu seinem konkreten Ziel kommt.
    Und außerdem ist nicht jeder Neuangemeldete hier gleichzeitig ein 12-jähriger Programmiernoob.

    So das war mein Gegenstatement...



  • [--> Sorry flenders, wenn es hier jetzt Offtopic läuft <--]

    @SeppSchrot
    Du hast mich Falsch verstanden. Ich will weder dich Angreifen noch den Fragenden Entmündigen. Desweiteren meinte ich nicht eine direkte Regel , sondern einen Sinn, deine Gästig den Code zu versenden ist in Freundschaftlicher Hinsicht auch OK, aber Unüberlegt ob er es nicht anders selbst lernen und Verstehen kann, die MSDN hällt einiges dazu gut Dokumentiert (auch Exsamples) dazu bereit, wenn man das nicht finden kann, fragt man danach und wir posten den Link, wenn er dann selbst mal was gemacht hat, aber dies nicht richtig Funktioniert, könnte dein Code zum Abgleich dienen, aber jetzt hat er eine Lösung, aus die er nicht, oder wenig lernen wird.
    Ich Verstehe ja auch wenn du die Lösung parat hast und jemand es stolz Übergeben kannst, was das selbstwertgefühl steigt, aber der Zeitpunkt sollte abgeschätzt werden, bevor du es presentierst, glaub mir damit hilfst du mehr als schnell Code posten (senden). Deine Gästig ist OK und Gut, aber der Zeitpunkt ist Falsch in meiner Ansicht.

    PS: lese mal einige Beiträge im Forumbereich "Spiele...", dann kannst du auch meine Ansicht Verstehen und erkennst die Gefahr vor Trolle und somit die versaung des WinAPI Forums. Immer mehr Anfänger wollen schnell zum Ziel, ohne zu lernen, das beziehe ich jetzt nicht auf den Fragenden, aber es ist so und dieses wie andere Forum wird immer Wertloser.



  • Wobei man dazu noch anmerken muß:
    Wenn jemand in einem Jahr eine Lösung für selbiges Problem sucht, findet er hier keine Lösung.

    Er müßte Dich anmailen, um die vermeintliche Lösung zu bekommen.
    Was, wenn Deine eMail-Adresse nicht mehr stimmt?
    Was, wenn Du den Quelltext nicht mehr hast?

    Das ist nicht der Sinn eines Forums...



  • Hepi schrieb:

    Wobei man dazu noch anmerken muß:
    Wenn jemand in einem Jahr eine Lösung für selbiges Problem sucht, findet er hier keine Lösung.

    *ROFL*
    Ich glaube, nicht wenige Leute hier finden nicht mal die Lösung, wenn sie am selben Tag gegeben wurde.
    Dann dürfte man ja wohl auch keine Links posten...

    Vielleicht hat MiC++ha ja Recht mit der Dreistigkeit mancher z.B. im Spieleforum.
    Trozdem glaube ich, dass ihr die Sache hier etwas zu dramatisch seht.



  • na hier geht ja was los,
    wusste ja gar nicht dass so etwas solch eine diskussion auslösen kann!
    also zum einen hab ich bislang nur mal eben in den code reingesehen. musste das mit dem http-download auch erstmal ein wenig zurückschieben.

    bin aber trotzdem dankbar, dass ich beispielcode bekommen habe da man wenn man in einer richtung noch so gut wie gar nicht gemacht hat, natürlich schon froh ist wenn man bsp. code bekommt. und diesen werde ich ganz bestimmt nicht übernehmen wie ich ihn bekomme!

    aber ich bekomme dadurch schonmal anhaltspunkte was ich in etwa alles zu beachten habe. und ich kann anhand der signifikanten befehle in der hilfe schmökern gehen.

    wobei mir hier natürlich auch schon einzelne befehle und tipps natürlich genauso ausgereicht hätten.



  • hab im übrigen noch was zum filedownload gefunden!

    URLDownloadToFile Function
    Internet Development Index

    Downloads bits from the Internet and saves them to a file.

    Syntax

    HRESULT URLDownloadToFile(
    LPUNKNOWN pCaller,
    LPCTSTR szURL,
    LPCTSTR szFileName,
    DWORD dwReserved,
    LPBINDSTATUSCALLBACK lpfnCB
    );

    siehe
    http://msdn.microsoft.com/workshop/networking/moniker/reference/functions/urldownloadtofile.asp



  • Ach es giebt so viele einfache Funktionen dafür, aber kaum einer kennt die,
    z.B. IPicture aus der Ole, mit der kann man locker und einfach Bilder (JPEG,GIF,BMP,PNG,etc..) aus dem Internet oder Festplatte laden und anzeigen, so wie zicht andere tolle Funktionen. Andere nehmen Socket,LibJpeg etc. ich nur eins "Ole" 😃
    Und das mit nur paar Codezeilen.



  • mit IPicture kann man doch mit Sicherheit keine Bilder aus dem Internet laden.



  • DOCH
    Der IE macht es auch

    Mit folgender Funktion kannst du Bilder in einer HBITMAP schreiben, als Dateipfad kannst du local "c:\\Bilder\\uschi.jpg" oder aus dem Internet "http://www.meinserver.de/bilder/uschi.jpg" angeben und er schreibt es ins HBITMAP.

    /* Achtung auch die Libs mit einbinden!!!! */
    #include <olectl.h>
    /* ..... */
    
    /* Aufrufbeispiel */
    char szBild[ ] = "http://winapi.michamedia.de/toplogo.gif";
    HBITMAP bild;
    if (LoadImage(szBild, bild)) {
      /* Wenn das Laden erfolgreich */
      /* Code um das Hbitmap z.B. im Fenster zu blitten */
    } else {
      /* Fehler Ausgeben */
    }
    
    /* Die Funktion (Undocumentiert, aber werde ich demnächst mal machen) */
    
    bool LoadImage(char *szPath, HBITMAP &pbild)
    {
    	HDC		hdcTemp;						
    	IPicture	*pPicture;					
    	OLECHAR		wszPath[MAX_PATH+1];			
    	long		lWidth;						
    	long		lHeight;					
    	long		lWidthPixels;				
    	long		lHeightPixels;             
    
    	MultiByteToWideChar(CP_ACP, 0, szPath, -1, wszPath, MAX_PATH);		
    	HRESULT hr = OleLoadPicturePath(wszPath, 0, 0, 0, IID_IPicture, (void**)&pPicture);  
    
    	if(FAILED(hr))								
    		return false;
    
    	hdcTemp = CreateCompatibleDC(GetDC(0));	
    	if(!hdcTemp)								
    	{
    		pPicture->Release();					
    		return false;							
    	}
    
    	pPicture->get_Width(&lWidth);						
    	lWidthPixels	= MulDiv(lWidth, GetDeviceCaps(hdcTemp, LOGPIXELSX), 2540);
    	pPicture->get_Height(&lHeight);						
    	lHeightPixels	= MulDiv(lHeight, GetDeviceCaps(hdcTemp, LOGPIXELSY), 2540);
    
    	BITMAPINFO	bi = {0};						
    	DWORD		*pBits = 0;						
    
    	bi.bmiHeader.biSize		= sizeof(BITMAPINFOHEADER);		
    	bi.bmiHeader.biBitCount		= 24;					
    	bi.bmiHeader.biWidth		= lWidthPixels;				
    	bi.bmiHeader.biHeight		= lHeightPixels;			
    	bi.bmiHeader.biCompression	= BI_RGB;				
    	bi.bmiHeader.biPlanes		= 1;	
    
    	pbild = CreateDIBSection(hdcTemp, &bi, DIB_RGB_COLORS, (void**)&pBits, 0, 0);
    
    	if(!pbild)								
    	{
    		DeleteDC(hdcTemp);						
    		pPicture->Release();					
    		return false;							
    	} 
    
    	SelectObject(hdcTemp, bild);
    
    	pPicture->Render(hdcTemp, 0, 0, lWidthPixels, lHeightPixels, 0, lHeight, lWidth, -lHeight, 0);
    
    	DeleteDC(hdcTemp);							
    	pPicture->Release();						
    
    	return true;		
    }
    


  • MiC++ha schrieb:

    DOCH
    Der IE macht es auch

    Mit folgender Funktion kannst du Bilder in einer HBITMAP schreiben, als Dateipfad kannst du local "c:\\Bilder\\uschi.jpg" oder aus dem Internet "http://www.meinserver.de/bilder/uschi.jpg" angeben und er schreibt es ins HBITMAP.
    [/cpp]

    WOW

    Ich muss da schon staunen.

    Das grosste Problem fur ein C++ Noob wie mich ist nicht das Coden an sich, aber die richtigen Libs zu verwenden.

    *frustriet*


Anmelden zum Antworten