Ich bin auf der Suche nach einer Methode zur Steuerung von Programmen in einer Windows-Umgebung.
Ich würde es vorziehen, dass es der Linux-Software " screen
" ein bisschen ähnlich ist.
Der Grund meiner Suche ist, dass ich ein Programm (unter Windows) mit einem Bezeichner starten muss, damit ich später dieses spezifische Programm schließen kann, ohne etwas anderes zu schließen - obwohl das eigentliche Programm (.exe Datei ) läuft mehrmals. Kann ich es also "benennen"?
Ich verwende jetzt folgendes unter Linux:
%Vor%Und dann weiß ich, dass ich es immer mit seiner ID finden kann:)
Es ist ein externes Programm, das ein Programm eines Drittanbieters beendet oder startet.
Mein Programm ist in C ++ geschrieben, wenn das irgendeinen Unterschied macht.
Bearbeiten: Kann ich die ID auf keinen Fall selbst wählen? Wie starte das Programm mit einem bestimmten Namen? Wie töte ich den Prozess, indem ich einen Namen gebe?
Wenn Sie das Programm starten, können Sie seine Prozess-ID auch unter Windows abrufen. Sie können diese Prozess-ID später verwenden, um das Programm erneut zu beenden.
Wenn Sie ihm eine eigene ID geben müssen, können Sie z. die Registrierung, um eine Zuordnung Ihrer ID zur Prozess-ID zu speichern. Wenn Sie einen Startbefehl erhalten, speichern Sie den Bezeichner in der Registrierung als Schlüssel und die PID des gestarteten Prozesses als Wert. Wenn Sie einen Befehl zum Beenden erhalten, rufen Sie die PID aus der Registrierung und töten Sie diese PID und löschen Sie den Schlüssel aus der Registrierung.
Anstelle der Registrierung können Sie natürlich auch eine Datenbank oder einen Ordner mit Dateien verwenden, wobei der Schlüssel (Ihr Bezeichner) der Dateiname und die PID in jeder Datei
istIm Moment glaube ich nicht, dass es ein natives Gegenstück für den Bildschirm gibt. Cygwin enthält eine Implementierung von Bildschirm, aber es kommt mit dem Overhead von Cygwin. Das Problem besteht darin, dass Windows- und Posix-basierte Betriebssysteme Konsolen auf sehr unterschiedliche Weise implementieren. Windows unterstützt nicht viele der tty-Funktionen, die Teil der POSIX-Umgebung sind. Es ist jedoch möglich, eine minimale Implementierung der Funktionalität im Bildschirm-Dienstprogramm mit den API-Aufrufen zu schreiben: AttachConsole und FreeConsole . Ich müsste jedoch etwas mehr zu diesem Thema recherchieren.
Obwohl ich keine Ahnung habe, was der Befehl linux screen
tut, warum verwenden Sie nicht einfach den Prozess-Handle, den Sie von CreateProcess
bekommen?
Sie erhalten auch die Prozess-ID, aber sie ist nur gültig, solange es offene Punkte für diesen Prozess gibt.
Der Parameter lpProcessInformation
enthält sowohl die Prozess-ID als auch den Prozess-Handle.
Tags und Links windows linux gnu-screen