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

Mak*_*Mak 3 windows visual-c++ sendinput

如何模拟这个ctrl alt del以便它可以工作?

我的代码如下:

输入输入;/*生成"按键"*/

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));
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 5

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

但是,这仅适用于Windows 7.对于旧版本的Windows,如果我没记错,您需要从MS请求一个特殊的库才能生成SAS.我的记忆让我失望,但我认为它叫做SASLIB.还有一种名为SasLibEx的商业产品可以完成这项工作.如果您需要支持旧版本的Windows,另一种途径是查看VNC的源代码以了解它们是如何做到的.

  • SendSAS的文档暗示Windows SDK包含sas.dll,并且可以在Windows Vista上使用它.但现在还不完全清楚. (2认同)