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管真心管得宽……

  • 相关阅读:
    PHP mysqli_fetch_assoc() 函数
    PHP mysqli_fetch_array() 函数
    PHP mysqli_fetch_all() 函数
    systemctl 列出系统所有服务
    HDU 1068 Girls And Boys 二分图题解
    Hadoop自学笔记(三)MapReduce简单介绍
    经典语录
    设计模式之九 单例模式
    NYOJ 587 blockhouses 【DFS】
    【从0開始Tornado建站】显示全部注冊用户
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6147394.html
Copyright © 2011-2022 走看看