Python ctypes keybd_事件模拟ctrl+;alt+;删除

Python ctypes keybd_事件模拟ctrl+;alt+;删除,python,winapi,keyboard-shortcuts,ctypes,Python,Winapi,Keyboard Shortcuts,Ctypes,我试图用keybd_事件模拟ctrl+alt+del,但它什么都不做,像ctrl+esc或alt+tab这样的东西可以工作,但ctrl+alt+del不起作用 import ctypes ctypes.windll.user32.keybd_event(0x11, 0, 0, 0) #CTRL is down ctypes.windll.user32.keybd_event(0x12, 0, 0, 0) #ALT is down ctypes.windll.user32.keybd_event(

我试图用keybd_事件模拟ctrl+alt+del,但它什么都不做,像ctrl+esc或alt+tab这样的东西可以工作,但ctrl+alt+del不起作用

import ctypes
ctypes.windll.user32.keybd_event(0x11, 0, 0, 0) #CTRL is down
ctypes.windll.user32.keybd_event(0x12, 0, 0, 0) #ALT is down
ctypes.windll.user32.keybd_event(0x2E, 0, 0, 0) #DEL is down
ctypes.windll.user32.keybd_event(0x2E, 0, 0x0002, 0) #DEL is up
ctypes.windll.user32.keybd_event(0x12, 0, 0x0002, 0) #ALT is up
ctypes.windll.user32.keybd_event(0x11, 0, 0x0002, 0) #CTRL is up

这是一个Windows安全机制。CTRL+ALT+DEL是特殊的。至少有一个理由是“按CTRL+ALT+DEL进行登录提示”,按下它可以确保Windows确实在询问密码,而不仅仅是一些伪装成Windows提示的程序。

CTRL+ALT+DEL是一种特殊的键序列,出于安全原因,称为,不能使用
keybd\u input
SendInput
伪造


您将需要使用API调用来模拟SAS。请仔细阅读文档并确保遵守此函数的严格要求。

对于使用ctypes的Python脚本,在会话0中创建服务是否是实现此目的的最佳方法?我认为程序可以通过将系统策略
SoftwareSASGeneration
设置为1或3来为服务启用此功能。为了澄清这些文档,for Vista support sas.dll发布在Windows 7 SDK的Redist文件夹中。根据License\\Redist.txt,可以分发此二进制文件。@eryksun是的,正如我所读到的,您可以在Vista上重新发布DLL。服务会完成的,但看起来很重。可能还有其他原因不愿意将服务强加给用户。如果它是一个桌面应用程序,那么还有一些困难需要解决。由于执行代码的进程通常是Python.exe,因此使用Python/ctypes并不容易。我会使用一个小的可执行文件来完成使用C++的C++构建的工作。如果需要XP支持,需要服务吗?我认为您需要是
SYSTEM
才能将ctrl+alt+del热键发送到
Winlogon
桌面。我没有XP测试箱来测试它。@eryksun在这一点上有点脏。MS仅按需提供saslib代码。而他们为提出请求而提供的电子邮件地址多年来一直被忽略。我认为您正在考虑自己撤销它,或者使用类似“好地方”之类的东西来查看开放源码VNC程序,因为它们通常需要发送SASC。如果我的应用程序设置为uiAccess=false,并且不是服务,是否仍然可以发送安全的attn请求@DavidHeffernan?