2017-05-08 101 views
1

我使用Python几乎运行键盘,使用下面的代码工作做按Ctrl + Alt键 + 德尔不工作,但是,按Ctrl + Shift + Tab或其他键组合正在以这种方式工作。 的,我指的十六进制代码列表是从人hereCTRL + ALT + DEL不WIN32API和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) 

帮助,将不胜感激。为此使用Windows 7。

回答

1

按Ctrl + Alt键+德尔在Windows中保留的系统功能为所有我知道的。这意味着操作系统不会将命令传递给您的程序。

有人纠正我,如果我错了。

+0

是的,在这里提到:https://stackoverflow.com/questions/43841820/ctrlaltdel-not-working-in-win32api-and-python#answer-43842599 –

3

secure attention sequence (SAS)不能通过伪造输入产生。您需要拨打SendSAS功能。

请注意,SendSAS的文档列出了其使用的一些相当严格的条件。您需要认真遵守这些条件才能取得成功,这对于Python程序来说可能非常困难。将调用SendSAS包装在一个单独的可执行文件中会很方便。

+0

谢谢,我期待着类似的东西,有没有办法你可以建议通过Pywinauto,Pyautogui或其他库,或者通过调用一些核心的win API函数来实现这一点? –

+0

如果您阅读链接文档中的必需条件,我认为您会同意在Python程序中遇到它们会很棘手。 –

+1

Python脚本可以通过以下两种方式之一来完成此操作:(1)使用作为SYSTEM运行的PyWin32创建服务,或者(2)在服务会话中创建作为SYSTEM运行的任务(通过COM或schtasks.exe)。如文档所述,您必须修改系统上的组策略才能实现此目的。无论哪种情况,只要脚本启动(即通过sc.exe,net.exe或'win32service'启动服务或通过COM或schtasks.exe运行任务,脚本就可以简单地通过ctypes调用'SendSAS(0)' )。 – eryksun