如何模拟这个 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/