zoukankan      html  css  js  c++  java
  • SendInput模拟Win(VK_LWIN)键的问题

    使用SendInput模拟按键,代码如下:

    #include "stdafx.h"
    #include <windows.h>
    #include <conio.h>
    
    #define KEY_TO_FIRE  VK_RWIN
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    
        _tprintf(_T("fire key...
    "));
        INPUT keyEvent = {0};
    
        keyEvent.type = INPUT_KEYBOARD;
        keyEvent.ki.wVk = KEY_TO_FIRE;
        keyEvent.ki.wScan = MapVirtualKey(KEY_TO_FIRE, 0);
        keyEvent.ki.dwFlags |= KEYEVENTF_EXTENDEDKEY;
    
        if( 0 == SendInput(1, &keyEvent, sizeof(keyEvent)) )
        {
            _tprintf(_T("SendInput error: %u
    "), GetLastError());
        }
    
        keyEvent.ki.dwFlags |= KEYEVENTF_KEYUP;
    
        if( 0 == SendInput(1, &keyEvent, sizeof(keyEvent)) )
        {
            _tprintf(_T("SendInput (UP) error: %u
    "), GetLastError());
        }
    
        _tprintf(_T("wait 3s to fire again...
    "));
        Sleep(3000);
    
        keyEvent.ki.dwFlags = KEYEVENTF_EXTENDEDKEY;
        if( 0 == SendInput(1, &keyEvent, sizeof(keyEvent)) )
        {
            _tprintf(_T("SendInput error: %u
    "), GetLastError());
        }
    
        keyEvent.ki.dwFlags |= KEYEVENTF_KEYUP;
    
        if( 0 == SendInput(1, &keyEvent, sizeof(keyEvent)) )
        {
            _tprintf(_T("SendInput (UP) error: %u
    "), GetLastError());
        }
    
        _getch();
    
        return 0;
    }

    发现Windows按键(VK_LWIN和VK_RWIN)死活出不来,查半天发现是360安全卫士的问题。它的驱动防护拦截了这个按键发送调用。

    关闭驱动防护即可,如图中标注所示:

    或者加入信任列表:

    360管真心管得宽……

  • 相关阅读:
    Puzzle, ACM/ICPC World Finals 1993, UVa227
    Puzzle, ACM/ICPC World Finals 1993, UVa227
    All in All, UVa 10340
    All in All, UVa 10340
    Box, ACM/ICPC NEERC 2004, UVa1587
    Box, ACM/ICPC NEERC 2004, UVa1587
    动态文本输出
    形态分析法
    粒子系统
    思维
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6147394.html
Copyright © 2011-2022 走看看