File Download



  • andi01 schrieb:

    edit: gleich noch etwas: warum nimmst du 3 backslashes??

    Warum überhaupt Backslashes? Ein Slash reicht und funktioniert ebenso.

    Dennoch sollte dieser Thread vielleicht in den WinAPI-Bereich verschoben werden.



  • Nexus schrieb:

    Ein Slash reicht und funktioniert ebenso.

    also ich habe es jetzt mal bei mir getestet (unter Win XP, MS Visual C++ 2008 EE), bei mir funktioniert es nur mit doppeltem Backslash.

    so geht es bei mir:

    system("explorer C:\\Dokumente und Einstellungen\\test");
    

    bei allen anderen Varianten (auch mit einfachen Slash) kommt

    Der Pfad ist nicht vorhanden oder vwerweist auf kein Verzeichnis.

    damit müsste sein Code so aussehen und hoffentlich funktionieren:

    #include <iostream> 
    #include <windows.h> 
    #include <urlmon.h> 
    
    int main() 
    { 
    // Datei herunterladen 
    HRESULT result = URLDownloadToFile( 
        NULL, 
        L"http://example.com/Update.exe", // URL zur Datei 
        L"C:\\Dokumente und Einstellungen\\Update.exe", // Lokaler Name der Datei 
        0, 
        NULL); 
    if (result == S_OK) 
    { 
      system("explorer  C:\\Dokumente und Einstellungen\\..."); 
    } 
    else 
    { 
      cout << "Fehler beim Download" << endl 
    } 
    
    }
    

    mfg,
    andi01.



  • Du hast Recht. Ich habe es mit #include -Pfaden verwechselt, wo einfacher Slash / reicht.



  • Hab es jetzt auch herausgefunden:

    #include <iostream>
    #include <windows.h>
    #include <urlmon.h>
    using namespace std;
    
    #pragma comment(lib,"URLMon.lib")
    
    void db()
    {
    	// Datei herunterladen
    HRESULT result = URLDownloadToFile(
        NULL,
        TEXT("URL ZUM FILE"), // URL zur Datei
    	TEXT("LOKALER PFAD"), // Lokaler Name der Datei
        0,
        NULL);
    if (result == S_OK)
    {
      cout << "TEST erfolgreich heruntergeladen" << endl;
      system("PAUSE");
      cout << endl;
    }
    else
    {
      cout << "Fehler beim Download" << endl;
      system("PAUSE");
    }
    }
    
    void dat()
    {
    // Datei herunterladen
    HRESULT result2 = URLDownloadToFile(
        NULL,
        TEXT("URL ZUM FILE"), // URL zur Datei
    	TEXT("LOKALER PFAD"), // Lokaler Name der Datei
        0,
        NULL);
    if (result2 == S_OK)
    {
      cout << "TEST erfolgreich heruntergeladen" << endl;
      system("PAUSE");
      cout << endl;
    }
    else
    {
      cout << "Fehler beim Download" << endl;
      system("PAUSE");
    }
    }
    
    void remove()
    {
    	remove("PFAD");
    	remove("PFAD");
    	cout << "Dateien geloescht" << endl;
    	system("PAUSE");
    }
    
    int main()
    {
    db();
    dat();
    //remove();
    }
    


  • Dieser Thread wurde von Moderator/in volkard aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Wie kann man ein .zip File nunn noch entpacken?

    am besten mit "void unzip()"

    hätte mir da jemmand nen code



  • Mit einer lib die das kann. Google ist ein Freund, auch deiner.



  • Also ich habs jetzt geschafft,dass die Dateien gedownloaded und entpackt werden soweit ich es möchte...

    Nun soll er die Datei die zum download führt (Down.exe) nach dem ausführen gelöscht werden und die Dateien die heruntergeladen werden in folgendes verzeichnis gemoved werden: "C:\Programme\DeckButler"..

    wie muss man das machen??

    void move()
    {
    }
    
    void removedown()
    {
    }
    


  • Da brauchst glaub ich ne weitere .exe, die dann die andere löscht. Willst du wirklich den "Updater" löschen?

    http://msdn.microsoft.com/en-us/library/aa365239
    http://msdn.microsoft.com/en-us/library/aa363915



  • Ich muss das einfach mal sagen, aber alle deine Fragen kann man nach 5 Sekunden googlen beantworten.

    Schau dir einfach die Funktionen auf MSDN zur Dateiverarbeitung an und dann weißt du wie du sie löscht, verschiebst, umbenennst, etc.



  • Ich wünsch dir viel Spaß mit der Funktion URLDownloadToFile 😋
    Bei "aktuelleren" Virenscannern kann es nämlich passieren, dass dieser Funktionsaufruf geblockt wird, weil es für "bösen Code" gehalten wird ..
    hatte das Problem erst selbst vor kurzem aber dagegen hilft auch Google :p



  • So habe nun mal mithilfe von google und einer schönen C"Bibel" etwas weiter gemacht...

    Nun möchte ich jedoch,dass die Dateien in C:\Dokumente und Einstellungen\USER\Eigene Dateien\ entpackt wird nur das klappt nicht soo wirklich könntet ihr mir dabei etwas helfen

    Habe nun versucht den User mithilfe von "%USERPROFILE%" zu bestimmen aber es scheint nicht zu klappen
    
    [cpp]
    hier mal der Code ich hoffe mal,dass ihr mir helfen könnt
    #include <iostream>
    #include <cstdlib.>
    #include <windows.h>
    #include <urlmon.h>
    #include <string>
    #include <direct.h>
    #include "unzip.h" //zum entpacken nötig
    
    using namespace std;
    
    #pragma comment(lib,"URLMon.lib")
    
    void deckbutler()
    {
        // Datei herunterladen
    HRESULT result = URLDownloadToFile(
        NULL,
        TEXT("http://home.arcor.de/Terra23/DeckButler/DeckButler.zip"), // URL zur Datei
        TEXT("C:\\Dokumente und Einstellungen\\%USERPROFILE%\\Eigene Dateien\\DeckButler\\DeckButler.zip"), // Lokaler Name der Datei
        0,
        NULL);
    if (result == S_OK)
    {
      cout << "DeckButler.zip erfolgreich heruntergeladen" << endl;
      system("PAUSE");
      cout << endl;
    }
    else
    {
      cout << "Fehler beim Download" << endl;
      system("PAUSE");
    }
    }
    
    void programmdateien()
    {
    // Datei herunterladen
    HRESULT result2 = URLDownloadToFile(
        NULL,
        TEXT("http://home.arcor.de/Terra23/DeckButler/Programmdateien.zip"), // URL zur Datei
        TEXT("C:\\Dokumente und Einstellungen\\%USERPROFILE%\\Eigene Dateien\\DeckButler\\Programmdateien.zip"), // Lokaler Name der Datei
        0,
        NULL);
    if (result2 == S_OK)
    {
      cout << "Programmdateien.zip erfolgreich heruntergeladen" << endl;
      system("PAUSE");
      cout << endl;
    }
    else
    {
      cout << "Fehler beim Download" << endl;
      system("PAUSE");
    }
    }
    
    void start()
    {
    	cout << "Programm starten? (j/n): ";
    	char input = ' ';
    	while ((input != 'j') && (input != 'J') && (input != 'n') && (input != 'N'))
    	{
    		cin.sync();
    		cin.get(input);
    	}
    	if (input == 'j' || input == 'J')
    	{
    	ShellExecute(NULL,"open","DeckButler.exe",NULL,NULL,SW_SHOWNORMAL);
    	}
    	else
    	{
    	}
    }	
    
    void remove()
    {
        remove("C:\\Dokumente und Einstellungen\\%USERPROFILE%\\Eigene Dateien\\DeckButler\\DeckButler.zip");
        remove("C:\\Dokumente und Einstellungen\\%USERPROFILE%\\Eigene Dateien\\DeckButler\\Programmdateien.zip");
        cout << "Dateien geloescht" << endl;
        system("PAUSE");
    	cout << endl;
    }
    
    void unzipdb()
    {
      HZIP hz = OpenZip("C:\\Dokumente und Einstellungen\\%USERPROFILE%\\Eigene Dateien\\DeckButler\\DeckButler.zip",0);
      ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.index;
      for (int i=0; i<numitems; i++)
      {
    	GetZipItem(hz,i,&ze);
    	//std::string szBasePath = "C:\\Programme\\DeckButler\\";
    	std::string szBasePath = "C:\\Dokumente und Einstellungen\\%USERPROFILE%\\Eigene Dateien\\DeckButler\\";
        szBasePath += ze.name;
    	UnzipItem(hz, i, szBasePath.c_str());
    	//UnzipItem(hz, i, ze.name);
      }
      CloseZip(hz);
    }
    
    void unzippd()
    {
      HZIP hz = OpenZip("C:\\Dokumente und Einstellungen\\%USERPROFILE%\\Eigene Dateien\\DeckButler\\Programmdateien.zip",0);
      ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.index;
      for (int i=0; i<numitems; i++)
      { 
        GetZipItem(hz,i,&ze);
    	//std::string szBasePath = "C:\\Programme\\DeckButler\\";
    	std::string szBasePath = "C:\\Dokumente und Einstellungen\\%USERPROFILE%\\Eigene Dateien\\DeckButler\\";
        szBasePath += ze.name;
    	UnzipItem(hz, i, szBasePath.c_str());
    	//UnzipItem(hz, i, ze.name);
      }
      CloseZip(hz);
    }
    
    void login()
    {
    	/*string passwort;
    
    	cout << "Passwort:";
    	cin >> passwort;
    
    	if(passwort=="db")
    	{*/
    		deckbutler();
    		programmdateien();
    		unzipdb();
    		unzippd();
    		remove();
    		start();
    	/*}
    	else
    	{
    		cout << "Login failed" << endl;
    		system("PAUSE");
    	}*/
    }
    
    int main()
    {
    	login();
    }
    


  • Benutze doch mal eine Suchmaschine 🙄
    In diesem Forum sollen programmiertechnische Probleme gelöst werden,
    und nicht dauerhaft und vor allem immer beim Gleichen auf Google verwiesen werden 😡

    google.de/search?hl=de&safe=off&hs=o6D&rls=de&q=c%2B%2B+aktuellen+user+ermitteln&meta=&aq=f&aqi=&aql=&oq=&gs_rfai=

    Gleich das erste Ergebnis beinhaltet die Lösung 👎


Anmelden zum Antworten