ShellExecute



  • Hallo
    ich möchte ein mp3 in winamp abspielen. das ganze soll durch betätigen eines buttons erreicht werden. wie funktioniert das mit shellexecute()?
    vielen dank



  • 😉 Bitte:

    ShellExecute(NULL,"open","C:\\Programme\\Winamp3\\Studio.exe","D:\\MP3\\File.mp3",NULL,SW_SHOW);
    

    Def von ShellExecut:

    HINSTANCE ShellExecute(
    HWND hwnd,  //NULL
    LPCTSTR lpVerb, //"open"
    LPCTSTR lpFile, //EXE Datei
    LPCTSTR lpParameters, //Deine Parameter. In diesem fall der Pfad zum MP3 File.
    LPCTSTR lpDirectory,  //Pfad zum Verzeichniss in dem das Programm ausgeführt werden soll.
    INT nShowCmd  //Wie soll das Fenster angezeigt werden? SW_HIDE (is weg) SW_SHOW (is da).
    );
    


  • Danke!
    Der Player soll nun aber automatisch loslegen, nicht erst über Betätigen von Play. Hab das mit dem Verb "Play" versucht klappt aber nicht.
    Gruss
    Uwe



  • fang mit dem spy die message ab, die von der taste play generiert wird.

    anschl. suche mit findwindow in deinem programm nach dem fester von winamp.
    hast du das gefunden, so schick im die abgefangene nachricht !



  • Ist Winamp dein Standard Player??
    Wenn ja, brauchst du nur die MP3 Datei öffnen, sie spielt in Winamp dann automatisch an...



  • Also bei mir spielt er automatisch?



  • Hier eine Version, wo sich dein Programm den Player mittels simulierten LButtonDown auf dei Playtaste startet.

    Dieser Code gehört nach dem ShellExecute eingefügt.
    Anschliessend wird max. 5 Sekunden lang versucht das WinAmp Fenster zu finden.
    Wenn dieses gefunden wird, wird sofort die Message "LBUTTONDWON", danach "LBUTTONUP" auf die Play taste an Winamp geschickt.

    Erfolgreich ausprobiert mit der neuesten Version von www.winamp.com

    Ich hoffe, dass ich dir helfen konnte !

    DWORD dwStartTime = GetTickCount();
    
        HWND winamp = NULL;
    
        while(1)
        {
            winamp = ::FindWindow(NULL,"normal");   // winamp3
    
            if(winamp != NULL || GetTickCount() - dwStartTime > 5000)
                break;
        }
    
        if(winamp != NULL)
        {
            AfxMessageBox("winamp3 gefunden -> versuche zu starten...");
    
            ::PostMessage(winamp,WM_LBUTTONDOWN,0x00000001, 0x005D002D);
            ::PostMessage(winamp,WM_LBUTTONUP,  0x00000000, 0x005D002D);
        }
        else
        {
            MessageBox("Konnte WinAmp nicht finden !!");
        }
    


  • Nachtrag:

    Sollte der Player mit o.a. Code nicht starten, einfach
    ein
    Sleep(1000); oder ähnlich nach

    if(winamp != NULL)
    {

    einfügen !


Anmelden zum Antworten