ShellExecute, mehfachen Start verhindern



  • hallo zusammen,

    ich starte aus nem Dialog per Button ne andere exe Datei mit Shellexecute.

    ShellExecute(NULL, "open","c:\\datei.exe", NULL, NULL, SW_SHOW);

    Wenn ich nun mehrmals auf den Button drücke , wird wie "datei.exe" auch mehrmals gestartet.

    Wie kann ich das verhindern ?

    Danke schön



  • Bei CreateProcess kriegst du ein Handle, auf das du z.B. mit WaitForSingleObject warten kannst.



  • Kommt jetzt darauf an ob Du warten möchtest bis das Programm beendet wurde dann mit WaitFor.. warten.. dein Programm pausiert derweil..

    Um ein Mehrfachstart zu verhindern evtl. mit FindWindow (fallse ein Fenster da ist) oder mit Process32First, Process32Next Processliste durchsuchen um zu ermitteln ob das Programm schon läuft..

    Gruß
    Marcus


  • Mod

    _matze schrieb:

    Bei CreateProcess kriegst du ein Handle, auf das du z.B. mit WaitForSingleObject warten kannst.

    Kriegt man auch mit ShellExecuteEx!



  • ich würde das ganze aus nem Thread raus starten und dann mit wait... warten, dadurch kannst du den Button in der zeit wo deine exe läuft disabled und danach wieder enabled oder über Time abfragen ob das handle noch gültig ist und den button eben wieder frei geben. bei der Timer geschichte ersparst du dir die unannehmlichkeit mit dem Thread. Auf jeden fall wenn du den button nicht anwählbar machst is das logischer als wenn man dann nur drauf drücken kann und nix passiert.

    So meine gedanken zum Thema.


Anmelden zum Antworten