2017-05-08 2 views
1

ich Python bin mit praktisch der Tastatur ausführen, mit dem folgenden Code zu tun Ctrl + Alt + Del ist jedoch nicht funktioniert, Ctrl + Shift + Tab oder andere Tastenkombinationen funktionieren auf diese Weise. Die Liste der Hex-Codes Ich beziehe mich ist von hereSTRG + ALT + ENTF funktioniert nicht in win32api und Python

import win32api 
import win32con 
import time 

win32api.keybd_event(0xA2, 0,0,0) 
time.sleep(.01) 
win32api.keybd_event(0xA4, 0,0,0) 
time.sleep(.01) 
win32api.keybd_event(0x2E, 0,0,0) 
time.sleep(.04) 

win32api.keybd_event(0xA2,0 ,win32con.KEYEVENTF_KEYUP ,0) 
time.sleep(.01) 
win32api.keybd_event(0xA4,0 ,win32con.KEYEVENTF_KEYUP ,0) 
time.sleep(.01) 
win32api.keybd_event(0x2E,0 ,win32con.KEYEVENTF_KEYUP ,0) 

Hilfe von jemand würde geschätzt. Verwenden Sie Windows 7 für diesen Zweck.

Antwort

1

Ctrl +Alt + Del ist eine reservierte Systemfunktion in Windows für alles, was ich weiß. Dies bedeutet, dass das Betriebssystem den Befehl überhaupt nicht an Ihr Programm weitergibt.

Jemand korrigieren mich auf diese wenn ich falsch liege.

+0

Ja, hier erwähnt: https://stackoverflow.com/questions/43841820/ctrlaltdel-not-working-in-win32api-and-python#answer-43842599 –

3

Die secure attention sequence (SAS) kann nicht durch falsche Eingabe erzeugt werden. Sie müssen die SendSAS Funktion aufrufen.

Beachten Sie, dass die Dokumentation für SendSAS einige ziemlich strenge Bedingungen für ihre Verwendung auflistet. Sie müssen diese Bedingungen sorgfältig einhalten, um erfolgreich zu sein, und dies könnte sich für ein Python-Programm als sehr schwierig erweisen. Es ist zweckmäßig, den Aufruf in eine separate ausführbare Datei zu SendSAS einzupacken.

+0

Danke, ich hatte etwas ähnliches erwartet, gibt es einen Weg Sie können vorschlagen, dies durch Pywinauto oder Pyautogui oder eine andere Bibliothek zu tun, oder indem Sie einige Kern-Win-API-Funktionen aufrufen? –

+0

Wenn Sie die erforderlichen Bedingungen in der verknüpften Dokumentation lesen, wie ich bereits erwähnt habe, werden Sie mir zustimmen, dass es schwierig sein wird, sie in einem Python-Programm zu treffen. –

+1

Ein Python-Skript kann dies auf zwei Arten tun: (1) Erstelle einen Dienst mit PyWin32, der als SYSTEM läuft oder (2) erstelle eine Aufgabe (via COM oder schtasks.exe), die als SYSTEM in der Servicesitzung läuft. Wie dokumentiert, müssen Sie die Gruppenrichtlinie auf dem System ändern, um dies zu ermöglichen. In jedem Fall kann das Skript 'SendSAS (0)' einfach über ctypes aufrufen, sobald es gestartet wird (zB indem der Dienst über sc.exe, net.exe oder 'win32service' gestartet wird oder die Aufgabe über COM oder schtasks.exe ausgeführt wird). – eryksun

Verwandte Themen