frage zu ShellExecute



  • wenn ich mit ShellExecute eine exe starte, wie kann ich dann diesem programm eine datei zuweisen?
    mit
    ShellExecute(NULL,"open","C:\\Programme\\Winamp\\winamp.exe",NULL,NULL,SW_SHOW);
    starte ich z.b. den winamp
    nun möchte ich diesen dazu bringen ne datei zu spielen
    (mir ist klar das er bei
    ShellExecute(NULL,"open","C:\\test.mp3",NULL,NULL,SW_SHOW);
    diese auch im winamp spielt - mp3 zuweisung in regitry)

    wie geht das wenn ich erst den player öffnen will und ihn dann dazu bringe dieses file zu spielen?
    wollte dies in einer zeile tun
    etwa so
    ShellExecute(NULL,"open","C:\\Programme\\Winamp\\winamp.exe",SW_SHOW,"open"," C:\\test.mp3");
    (was leider nicht tut 😞 )



  • MSDN schrieb:

    HINSTANCE ShellExecute(
        HWND hwnd, 
        LPCTSTR lpOperation,
        LPCTSTR lpFile, 
        LPCTSTR lpParameters, 
        LPCTSTR lpDirectory,
        INT nShowCmd
    );
    

    [...]

    lpParameters
    [in] If the lpFile parameter specifies an executable file, lpParameters 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.

    also wie wär's mit:

    #pragma comment( lib, "shell32.lib" )
    
    #define _WIN32_WINNT 0x0500
    #include <windows.h>
    
    #include <shellapi.h>
    
    int main( )
    {
        ShellExecute( GetConsoleWindow( ),
                      TEXT( "open" ),
                      TEXT( "C:\\programme\\Winamp v5.08e\\winamp.exe" ),
                      TEXT( "\"D:\\common\\music\\Eisregen - 2000 - Leichenlager\\Eisregen - 2000 - Leichenlager - 04 - ...und sie blutete nur einen Sommer lang.mp3\"" ),
                      TEXT( "C:\\programme\\Winamp v5.08e" ),
                      SW_SHOW
        );
    }
    

    Greetz, Swordfish



  • genau so hab ich mir das vorgestellt
    danke mal wieder für dein schnelles reply

    aber laufen tut es noch nicht

    C:\Programme\Microsoft Visual Studio 8\VC\Debug\Debug\eaw2.cpp(92) : error C2065: 'GetConsoleWindow' : undeclared identifier
    C:\Programme\Microsoft Visual Studio 8\VC\Debug\Debug\eaw2.cpp(94) : error C2001: newline in constant
    C:\Programme\Microsoft Visual Studio 8\VC\Debug\Debug\eaw2.cpp(97) : warning C4002: too many actual parameters for macro 'TEXT'
    C:\Programme\Microsoft Visual Studio 8\VC\Debug\Debug\eaw2.cpp(97) : error C2143: syntax error : missing ')' before ';'
    C:\Programme\Microsoft Visual Studio 8\VC\Debug\Debug\eaw2.cpp(117) : warning C4508: 'main' : function should return a value; 'void' return type assumed
    Error executing cl.exe.

    eaw2.obj - 3 error(s), 2 warning(s)

    hab ich da was übersehen?
    ich bastel noch ein wenig damit rum......



  • dafür ist dein musikgeschmack nicht übel 😉



  • habe die compiler fehlermeldungen weg

    ShellExecute, //( GetConsoleWindow( ), weggelassen
    TEXT( "open" ),
    TEXT( "C:\\programme\\Winamp\\winamp.exe"),
    TEXT( "\"C:\\remix.mp3\"" ),
    TEXT( "C:\\programme\\Winamp" ),
    SW_SHOW;

    dafür tut sich nichts
    ???????????
    hmmmmmm und nun?



  • Wenn Du wirklich ein Komma zwischen ShellExecute und öffnender Klammer hast, wundert mich nicht dass nichts passiert 🙄

    EDIT:
    Sehe gerade, das ist ja nur eine Kommaliste aus einer Funktionsadresse und ein paar Strings. Du weisst schon dass man für Funktionsaufrufe zwingend Klammern benötigt, oder? 😃

    EDIT2:
    1. Wenn Du abtippen schon nicht schafft, lass es besser (sorry)
    2. Les die Meldungen, das meiste wird erklärt.
    3. Poste den Code den Du tatsächlich dann auch ausführst, das könnte helfen...



  • Dieser Thread wurde von Moderator/in evilissimo 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.



  • lobo76 schrieb:

    aber laufen tut es noch nicht

    Du denkst doch nicht, dass ich nicht funktionsfähigen Code poste!? 😃

    Greetz, Swordfish



  • hab es 😃

    ShellExecute(NULL,
    TEXT( "open" ),
    TEXT( "C:\\programme\\Winamp\\winamp.exe" ),
    TEXT( "\"C:\\remix.mp3\"" ),
    TEXT( "C:\\programme\\Winamp v5.08e" ),
    SW_SHOW);

    dein GetConsoleWindow hat mich aus dem takt gebracht 😉

    dann haben die parameter für ShellExecute nicht gepasst........
    durch das klassische try and error lernt man doch am schnellsten.....

    danke@Swortfish



  • lobo76 schrieb:

    ShellExecute( NULL,   
                  TEXT( "open" ), 
                  TEXT( "C:\\programme\\Winamp\\winamp.exe" ), 
                  TEXT( "\"C:\\remix.mp3\"" ),
                  TEXT( "C:\\programme\\Winamp v5.08e" ),    // <- Ähm...
                  SW_SHOW);
    

    ... das soll das aktuelle Verzeichnis für die ausgeführte .exe sein. Ich glaub' nicht, dass es "C:\programme\Winamp v5.08e" bei dir gibt. 😉

    Greetz, Swordfish


Log in to reply