FAQ ergänzen - ShellExecute Parameter LPCTSTR FileParam



  • Hallo

    http://www.c-plusplus.net/forum/viewtopic.php?t=39256

    mich interessiert eigentlich, was der Parameter LPCTSTR FileParam in der Funktion ShellExecute bewirkt.

    Sunday schrieb:

    // ohne parameter 
    RunApplication("meine.exe", 0); 
    RunApplication("mailto:magic_sunday@gmx.de", 0); 
    RunApplication("http://www.magic-sunday.de", 0); 
    
    // mit parameter 
    RunApplication("meine.exe", "1 2 3"); 
    RunApplication("net", "use"); 
    RunApplication("format", "a: /s"); 
    
    // aufruf bei AnsiString-Übergabe 
    AnsiString FileName = "c:\\windows\\calc.exe"; 
    RunApplication(FileName.c_str(), 0);
    

    Vielleicht könnte man dies noch zu den FAQ hinzufügen? 🙂

    Edit: Shit, das gehört ja auch eher nach C++-Forum 🙄



  • MichelM schrieb:

    Edit: Shit, das gehört ja auch eher nach C++-Forum 🙄

    Eher WinAPI-Forum.



  • Hallo

    Interessiert dich nun die VCL-Funktion RunApplication oder die WinAPI-Funktion ShellExecute?
    Zu ersterem kannst du in der BCB-Hilfe nachlesen, zu zweiterem in der MSDN. Das braucht nicht die FAQ, denn Dokumentation lesen ist eigentlich selbstverständlich.

    bis bald
    akari



  • Das habe ich ja im Titel schon geschrieben! Es geht um den Parameter LPCTSTR FileParam.

    In der MSDN bin ich nicht richtig fündig geworden bzw. das hat mir nicht weitergeholfen.

    Sunday übergibt in der Funktion RunApplication ja den LPCTSTR FileParam direkt weiter an die ShellExecute!

    Und da Sunday die Aufrufbeispiele gebracht hat, dachte ich, es wäre auch hilfreich, wenn man kurz erklärt, was die Parameter dazu bewirken.

    Danke



  • Hallo

    Ausgehend von dieser Zeile aus der FAQ

    ShellExecute(0, "open", FileName, FileParam, 0, SW_SHOWNORMAL);
    

    kannst du nachzählen, das FileParam das vierte Argument im Aufruf von ShellExecute ist.

    Mit einem Blick in die von mir verlinkte MSDN-Seite kannst du dann die Beschreibung für den vierten Parameter nachlesen :

    lpParameters [in, optional]
    LPCTSTR

    If lpFile specifies an executable file, this parameter is a pointer to a null-terminated string that specifies the parameters to be passed to the application. The format of this string is determined by the verb that is to be invoked. If lpFile specifies a document file, lpParameters should be NULL.

    Wenn das noch immer unklar ist, kannst du unten auf der MSDN-Seite noch ein einfaches Beispiel finden :

    char* csApp = "regedit";
    char* csParams = "/s C:\example.reg";
    
    HINSTANCE nResult = ShellExecute(
    NULL,
    NULL, // do not request elevation unless needed
    csApp,
    csParams, // params 
    NULL, // directory 
    SW_HIDE);
    

    Also während App das auszuführende Programm bestimmt, wird in Params zusätzliche Kommandozeilen-Parameter übergeben. Im Beispiel zu regedit eben eine Datei mit den hinzuzufügenden Registry-Werten.

    Ich halte das immer noch nicht für FAQ-relevant...

    bis bald
    akari


Anmelden zum Antworten