Unterbrechen Sie den Windows-Prozess mit einem Makro

1095
Pier-Olivier Pellerin

Ich arbeite an einer kleinen Sache und ich muss eine Windows-Operation "vereinfachen" und ich bin irgendwie festgefahren. Ich weiß nicht, ob ihr mir helfen könnt, es herauszufinden ... also hier ist mein Problem und wie ich will es muss gelöst werden:

Ich muss in der Lage sein, einen bestimmten Fensterprozess für X Sekunden durch Drücken von 1 oder 2 Tasten anzuhalten. Idealerweise wird eine Taste mit einer Verzögerung von X Sekunden ausgesetzt, bevor sie wieder aufgenommen wird. Es kann jedoch auch 1 Taste zum Anhalten und eine weitere Taste zum Fortsetzen gesetzt werden.

Was ich erwarte, dass es ist (dann Agian, könnte ein wenig anders sein): Erstellen Sie eine EXE-Datei und binden Sie die Dateikombination auf eine programmierbare Schaltfläche auf einer meiner Makrotasten auf meiner Tastatur. Ich brauche Hilfe, um einen Weg zu finden, um dies in etwas zu programmieren. Ich habe versucht, ein Tool namens pssuspend.exe zu verwenden, aber ich konnte es nicht zum Laufen bringen.

Danke für die Hilfe !

0
Ohne zu viel Arbeit und als Basislösung können Sie eine Verknüpfungsdatei zu Ihrer Datei pssuspend.exe erstellen und dann die Eigenschaften bearbeiten, um den Prozessnamen hinzuzufügen, der als Parameter im Feld "Ziel" angehalten werden soll. Sie können eine Tastenkombination kombinieren und festlegen, ob sie beispielsweise minimiert ausgeführt werden soll. Sie könnten dasselbe noch einmal für den Lebenslauf tun. Können Sie den Prozess, den Sie im Sinn haben, unterbrechen, ohne ihn zu erhöhen? HelpingHand vor 6 Jahren 0
Danke für die Antwort. Aber ich kann nicht herausfinden, wie man die Eigenschaften dieser .exe bearbeitet? irgendwelche Hinweise? Außerdem möchte ich, dass es funktioniert, während eine andere Vollbildanwendung verwendet wird, ohne dass es minimiert werden muss. Pier-Olivier Pellerin vor 6 Jahren 0
Sie erstellen eine Verknüpfung dazu und bearbeiten die Eigenschaften davon. HelpingHand vor 6 Jahren 0
Nochmals vielen Dank für die Antwort, Sir! Es scheint zu funktionieren, wenn ich auf meine Verknüpfung klicke. Sie führt pssuspend mit den richtigen Argumenten aus. Das neue Problem besteht jedoch darin, dass ich, wenn ich dieser Tastenkombination die Makrotaste meiner Tastatur zuweise, alle Argumente ignoriert und nur die Basisdatei ohne öffnet die benutzerdefinierten Argumente ... gibt es eine Problemumgehung? Gibt es eine Möglichkeit, eine Art BAT-Datei zu erstellen, um mir zu helfen? Pier-Olivier Pellerin vor 6 Jahren 0
Wie wäre es dann mit einem kleinen Exe-Wrapper? Laden Sie AutoIt herunter und installieren Sie es (https://www.autoitscript.com/site/autoit/). Erstellen Sie eine neue Textdatei und geben Sie den Namen "suspend.au3" an. Fügen Sie die 3 Zeilen hinzu: `Run (" C: \ SysinternalsSuite \ pssuspend.exe onedrive "," ", @SW_HIDE)` `Sleep (5000)` `Run (" C: \ SysinternalsSuite \ pssuspend.exe onedrive -r ") "", @SW_HIDE) `Passen Sie den Vorgang wie oben beschrieben an. Sie können speichern und dann mit der rechten Maustaste klicken und "Complie Script (x86)" wählen. Dies erzeugt ein Exe. Stellen Sie den gewünschten Schlaf ein (z. B. 3 Sekunden) und deaktivieren Sie ihn, erstellen Sie ein Exe für jede Aufgabe usw. HelpingHand vor 6 Jahren 0
Ich bin neugierig zu wissen, ob sich der AutoIt-Ansatz für das Verhalten, nach dem Sie suchen, als nützlicher erwies? HelpingHand vor 6 Jahren 0

1 Antwort auf die Frage

1
PsychoX

Google search feed for 15 September 2018:

PsSuspendWerkzeug von PsTools(Microsoft sysinternalsUtilities Pack)

Da es sich hierbei um ein offizielles Werkzeug handelt, ist es möglicherweise die beste Wahl für einfache Skripts und die Automatisierung.

Laufen PsSuspend mit einem Prozess - ID leitet sie den Prozess dieser ID auf dem lokalen Computer zu sperren oder wieder aufzunehmen. Wenn Sie einen Prozessnamen angeben, setzt PsSuspend alle Prozesse mit diesem Namen aus oder setzt sie fort. Geben Sie den Schalter -r an, um angehaltene Prozesse fortzusetzen.

Verwendungszweck: pssuspend [- ] [-r] [\\computer [-u username] [-p password]] <process name | process id>

Einfaches Programm mit Windows API: SuspendThreadundReasumeThread

Windows hat einige Funktionen zum Anhalten und Wiederherstellen von Threads (also einige Arten von Prozessen). Die kernel32.dllBibliothek bietet SuspendThreadund ReasumeThread. Warnung! Es gibt auch 64-Bit-Entsprechungen für diese Funktionen Wow64SuspendThreadund Wow64ResumeThread(ohne offizielle Dokumentation).

Es gibt eine nette, kleine Anwendung, die diese Technik auch in C / C ++ und CodeProject verwendet (Quellcode verfügbar).

Verwendung: pausep PID [/r]( /rSchalter setzt den Vorgang fort).

Es gibt auch eine Version in C # .NET für CodeProject.

Sehen Sie sich auch diese Stackoverflow-Antwort an

Benutzerfreundlichere Befehlszeilenmethode (Powershell) aus dieser Antwort:

Wie bereits erwähnt, verfügt die Windows-Befehlszeile nicht über ein Dienstprogramm, aber Sie können eine Windows-API-Funktion von PowerShell aus aufrufen. Installieren Sie zuerst das Invoke-WindowsApi-Skript, dann können Sie Folgendes schreiben:

Invoke-WindowsApi "kernel32" ([bool]) "DebugActiveProcess" @([int]) @(process_id_here)

Eine ähnliche Technik wurde zum Erstellen dieses PowerScript-Skripts verwendet, das für die Prozesspause erstellt wurde.