Dienste/Anwendungen überwachen, starten und stoppen



  • Hallo,

    ich will ein kleines Controller Programm "Controller" machen, daß ständig schaut, ob eine andere Anwendung "Server" zwischen 7:00 und 19:00 läuft. Wird diese innerhalb dieser Zeit beendet, soll das Controller Programm "Server" neu starten.

    19:00 soll es die Anwendung schließen und irgendwann in der Nacht ein Aufräumprogramm "Clean" starten, dann früh um 7 wieder "Server" anmachen.

    Wie kann ich vom Borland C-Builder 5 aus realisieren, daß ich "Server" starte, kontrolliere und beende? Ich kann Server auch als Dienst starten.

    Kann mir jemand Tipps oder Links geben. Ich finde einfach nix passendes.

    Danke und Gruß,
    Heiko



  • Mit CreateProcess hast du Kontrolle über den Status eines von dir gestarteten Programmes. Beispiele findest du u.a. in der FAQ unter "externes Programm starten".



  • Hallo,

    kurz nachdem ich die Frage gestellt habe, wurde die FAQ geposted, die ich gleich studiert habe und den wunderbaren Quelltext von Disrupter gefunden habe. Mit den Prozessen geht das ja wunderbar. Alles was mir dann noch gefehlt hat, war TerminateProcess, aber das hab ich selbst rausgekriegt.

    Danke und Grüße,
    Heiko



  • wie kriege ich bei Prozessen Parameter übergeben?

    z.B. notepad "test.txt" gestarted?

    Wo bringe ich das im Beispielprogramm aus der FAQ unter? Ich habe die Prozessgenerierungsroutine mal um einen Parameter erweitert, wo der Parameterstring enthalten ist. Wo gehört der hin?

    HANDLE TFormMain::ExecuteProcess( const String & CommandLine, const String & Param, const String & WorkDir )
    {
    STARTUPINFO sStartInfo;
    ZeroMemory( &sStartInfo, sizeof(STARTUPINFO) );
    sStartInfo.cb = sizeof(STARTUPINFO);
    sStartInfo.wShowWindow = SW_SHOWDEFAULT;
    sStartInfo.dwFlags = STARTF_USESHOWWINDOW;

    PROCESS_INFORMATION sProcessInfo;
    ZeroMemory( &sProcessInfo, sizeof(PROCESS_INFORMATION) );

    bool ok = CreateProcess( NULL, CommandLine.c_str(), NULL, NULL, true, NORMAL_PRIORITY_CLASS, NULL, WorkDir.c_str() , &sStartInfo, &sProcessInfo );

    if ( !ok ) {
    sProcessInfo.hProcess = 0;
    }
    return sProcessInfo.hProcess;
    }

    Danke und Gruß,
    Heiko



  • Du kannst notepad "test.txt" als lpCommandLine übergeben

    Bye
    m0rgu3


Anmelden zum Antworten