windows - 通过 INPUT 结构发送 Ctrl Alt Del 不起作用?

标签 windows visual-c++ sendinput

如何模拟这个 ctrl alt del 使其工作?

我的代码如下:

INPUT 输入; /* 生成一个“按下键” */

Input.type  = INPUT_KEYBOARD;
Input.ki.dwFlags  = KEYEVENTF_SCANCODE; 
Input.ki.wScan=29;
Input.ki.dwExtraInfo=0;
Input.ki.wVk=0;
Input.ki.time=0;
SendInput(1, &Input, sizeof(Input));


Input.type  = INPUT_KEYBOARD;
Input.ki.dwFlags  = KEYEVENTF_SCANCODE; 
Input.ki.wScan=56;
Input.ki.dwExtraInfo=0;
Input.ki.wVk=0;
Input.ki.time=0;
SendInput(1, &Input, sizeof(Input));


Input.type  = INPUT_KEYBOARD;
Input.ki.dwFlags  = KEYEVENTF_EXTENDEDKEY | KEYEVENTF_SCANCODE; 
Input.ki.wScan=83;
Input.ki.dwExtraInfo=0;
Input.ki.wVk=0;
Input.ki.time=0;
SendInput(1, &Input, sizeof(Input));


Input.type  = INPUT_KEYBOARD;
Input.ki.dwFlags  = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP; 
Input.ki.wScan=29;
Input.ki.dwExtraInfo=0;
Input.ki.wVk=0;
Input.ki.time=0;
SendInput(1, &Input, sizeof(Input));


Input.type  = INPUT_KEYBOARD;
Input.ki.dwFlags  = KEYEVENTF_SCANCODE  | KEYEVENTF_KEYUP; 
Input.ki.wScan=56;
Input.ki.dwExtraInfo=0;
Input.ki.wVk=0;
Input.ki.time=0;
SendInput(1, &Input, sizeof(Input));


Input.type  = INPUT_KEYBOARD;
Input.ki.dwFlags  = KEYEVENTF_EXTENDEDKEY | KEYEVENTF_SCANCODE  | KEYEVENTF_KEYUP; 
Input.ki.wScan=83;
Input.ki.dwExtraInfo=0;
Input.ki.wVk=0;
Input.ki.time=0;
SendInput(1, &Input, sizeof(Input));

最佳答案

CTRL+ALT+DEL 是安全注意序列 (SAS),您不能用 SendInput 伪造它。 SendSAS函数是您需要调用的。

但是,这仅在 Windows 7 上可用。对于旧版本的 Windows,如果我没记错的话,您需要从 MS 请求一个特殊的库才能生成 SAS。我的内存力有问题,但我认为它叫做 SASLIB。还有一个名为 SasLibEx 的商业产品。就可以了。如果您需要支持旧版本的 Windows,还有一个途径是查看 VNC 的源代码,了解它们是如何实现的。

关于windows - 通过 INPUT 结构发送 Ctrl Alt Del 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9806153/

相关文章:

windows - 如何在调用 CMenu::LoadMenu 后附加一个动态菜单项?

keystroke - SendInput 不适用于游戏

autohotkey - 如何在 AutoHotkey 中的 SendInput 命令之间添加延迟?

c++ - 从 system() VC++ 调用时,WUSA 发生灾难性故障 0x8000ffff

c# - 使用 SendInput 时,如何判断接收窗口何时收到并处理了消息?

C++如何让两个程序进行通信?

c++ - 如何实例化MsftRawCDImageCreator?

c++ - 使用 Qt 制作几乎原生的 Windows 应用程序?

java - 如何使用浏览器访问8080端口的tomcat?

c++ - 通过脚本将项目添加到 Visual Studio C++ 解决方案