externes Programm beenden



  • Hallo

    Ich möchte gerne in meinem Programm ein anderes externes Programm beenden und nach einer bestimmten Zeit wieder starten!
    Hat jemand ein Ansatz wie ich das machen kann?

    thx sven



  • Servus,

    hier was aus WINAPI -> http://c-plusplus.net/forum/viewtopic.php?t=39369

    Ansonsten mein Vorschlag:
    1.
    CWnd *pWnd = FindWindow("FensterName");
    pWnd->PostMessage(WM_CLOSE, NULL, NULL);

    2. WM_TIMER
    einen Timer basteln.

    Mit ShellExecute() wieder ausführen

    *winke*
    Hellsgore (Der 3te Tag als Nichtraucher)



  • danke Hellsgore

    Also das mit dem FindWindow() klappt einwandfrei!

    Leider ha ich mal wieder das Problem das ich unter eVC (PocketPC) proggen muss!
    Da gibt es leider die Methode ShellExecute() nicht sondern nur die ShellExecuteEx()

    ShellExecuteEx
    This function performs an action on a file. The file can be an executable file or a document.

    WINSHELLAPI BOOL WINAPI ShellExecuteEx(
    LPSHELLEXECUTEINFO lpExecInfo );
    Parameters
    lpExecInfo
    Long pointer to a SHELLEXECUTEINFO structure that contains and receives information about the application being executed.

    Diese Methode braucht nur einen Parameter der jedoch von der Struktur SHELLEXECUTEINFO ist

    This structure specifies an enumerated type that defines flags used with the IShellFolder::EnumObjects method.

    The SHELLEXECUTEINFO structure contains information used by the ShellExecuteEx function.

    typedef struct _SHELLEXECUTEINFO {
    DWORD cbSize;
    ULONG fMask;
    HWND hwnd;
    LPCSTR lpVerb;
    LPCSTR lpFile;
    LPCSTR lpParameters;
    LPCSTR lpDirectory;
    int nShow;
    HINSTANCE hInstApp;

    // Optional members
    LPVOID lpIDList;
    LPCSTR lpClass;
    HKEY hkeyClass;
    DWORD dwHotKey;
    HANDLE hIcon;
    HANDLE hProcess;
    } SHELLEXECUTEINFO, FAR *LPSHELLEXECUTEINFO;

    nur weiß ich nicht wie damit umzugehen hab! Hat wer dazu vielleicht ne idee wie man die Methode ausführen kann?

    thx sven



  • Servus,

    versuchs mal mit WinExec("blabla.exe", SW_SHOW)....

    *winke*
    Hellsgore



  • danke dir!
    habe aber bereits rausgefunden wie das mit der Struktur funzt!

    SHELLEXECUTEINFO info;
    	info.cbSize = sizeof(info);
    	info.fMask = SEE_MASK_FLAG_NO_UI;
    	info.hwnd = NULL;
    	info.lpVerb = _T("open");
    	info.lpFile = _T("\\Windows\\ActiveConnect.exe");
    	info.lpParameters= _T("");
    	info.lpDirectory = _T("");
    	info.nShow = SW_SHOW;
    	info.hInstApp = AfxGetInstanceHandle();
    	ShellExecuteEx(&info);
    

    Das Prog wird auch gestartet, nur leider bekommt es aus irgendeinen Grund einen falschen Parameter mitgeliefert! Der den Startvorgang nicht durchführen kann! Kann ich mir von dem laufenden Programm bestimmte Parameter holen speichern und beim starten des Programms diese mitübergeben, wenn ja dann wie ?
    😡

    sven

    p.s. WinExec (..) ist leider nicht unter eVC verfügbar!


Anmelden zum Antworten