zoukankan      html  css  js  c++  java
  • keybd_event 对应表

    Option Explicit

    Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

    Private Const VK_ADD As Long = &H6B '加号键
    Private Const VK_APPS As Long = &H5D 'Applications 键(相当于鼠标右键)
    Private Const VK_BACK As Long = &H8 'BackSpace 键
    Private Const VK_CAPITAL As Long = &H14 'Caps Lock 键(大小写转换键)
    Private Const VK_CANCEL As Long = &H3 'Ctrl + Break 过程
    Private Const VK_CONTROL As Long = &H11
    Private Const VK_DECIMAL As Long = &H6E '小数点号键
    Private Const VK_DELETE As Long = &H2E
    Private Const VK_DIVIDE As Long = &H6F '除号键
    Private Const VK_DOWN As Long = &H28
    Private Const VK_END As Long = &H23
    Private Const VK_ESCAPE As Long = &H1B
    Private Const VK_F1 As Long = &H70
    Private Const VK_F10 As Long = &H79
    Private Const VK_F11 As Long = &H7A
    Private Const VK_F12 As Long = &H7B
    Private Const VK_F2 As Long = &H71
    Private Const VK_F3 As Long = &H72
    Private Const VK_F4 As Long = &H73
    Private Const VK_F5 As Long = &H74
    Private Const VK_F6 As Long = &H75
    Private Const VK_F7 As Long = &H76
    Private Const VK_F8 As Long = &H77
    Private Const VK_F9 As Long = &H78
    Private Const VK_HOME As Long = &H24
    Private Const VK_INSERT As Long = &H2D
    Private Const VK_LCONTROL As Long = &HA2
    Private Const VK_LEFT As Long = &H25
    Private Const VK_LMENU As Long = &HA4 '左 Alt 键
    Private Const VK_LSHIFT As Long = &HA0
    Private Const VK_LWIN As Long = &H5B
    Private Const VK_MENU As Long = &H12 'Alt 键
    Private Const VK_MULTIPLY As Long = &H6A '乘号键
    Private Const VK_NEXT As Long = &H22 '下翻页键
    Private Const VK_NUMLOCK As Long = &H90
    Private Const VK_NUMPAD0 As Long = &H60
    Private Const VK_NUMPAD1 As Long = &H61
    Private Const VK_NUMPAD2 As Long = &H62
    Private Const VK_NUMPAD3 As Long = &H63
    Private Const VK_NUMPAD4 As Long = &H64
    Private Const VK_NUMPAD5 As Long = &H65
    Private Const VK_NUMPAD6 As Long = &H66
    Private Const VK_NUMPAD7 As Long = &H67
    Private Const VK_NUMPAD8 As Long = &H68
    Private Const VK_NUMPAD9 As Long = &H69
    Private Const VK_PAUSE As Long = &H13
    Private Const VK_PRINT As Long = &H2A
    Private Const VK_PRIOR As Long = &H21 '上翻页键
    Private Const VK_RCONTROL As Long = &HA3
    Private Const VK_RETURN As Long = &HD '回车键
    Private Const VK_RIGHT As Long = &H27
    Private Const VK_RMENU As Long = &HA5 '右 Alt 键
    Private Const VK_RSHIFT As Long = &HA1
    Private Const VK_RWIN As Long = &H5C
    Private Const VK_SCROLL As Long = &H91 'Scroll Lock 键
    Private Const VK_SEPARATOR As Long = &H6C '小键盘上的回车键
    Private Const VK_SHIFT As Long = &H10
    Private Const VK_SLEEP As Long = &H5F '休眠键
    Private Const VK_SNAPSHOT As Long = &H2C 'Print Screen 键
    Private Const VK_SPACE As Long = &H20
    Private Const VK_SUBTRACT As Long = &H6D '减号键
    Private Const VK_TAB As Long = &H9
    Private Const VK_UP As Long = &H26
    Private Const VK_OEM_1 As Long = &HBA 'Windows 2000:对于 US 标准键盘,是“;:”键
    Private Const VK_OEM_2 As Long = &HBF 'Windows 2000:对于 US 标准键盘,是“/?”键
    Private Const VK_OEM_3 As Long = &HC0 'Windows 2000:对于 US 标准键盘,是“`~”键
    Private Const VK_OEM_4 As Long = &HDB 'Windows 2000:对于 US 标准键盘,是“[{”键
    Private Const VK_OEM_5 As Long = &HDC 'Windows 2000:对于 US 标准键盘,是“|”键
    Private Const VK_OEM_6 As Long = &HDD 'Windows 2000:对于 US 标准键盘,是“]}”键
    Private Const VK_OEM_7 As Long = &HDE 'Windows 2000:对于 US 标准键盘,是“单/双引号”键
    Private Const VK_OEM_COMMA As Long = &HBC 'Windows 2000:对于任何国家/地区,是“,”键
    Private Const VK_OEM_MINUS As Long = &HBD 'Windows 2000:对于任何国家/地区,是“-”键
    Private Const VK_OEM_PERIOD As Long = &HBE 'Windows 2000:对于任何国家/地区,是“.”键
    Private Const VK_OEM_PLUS As Long = &HBB 'Windows 2000:对于任何国家/地区,是“+”键

    Private Const KEYEVENTF_KEYUP = &H2


    /**********************

    A 65 0 96 F1 112 Backspace 8
    B 66 1 97 F2 113 Tab 9
    C 67 2 98 F3 114 Clear 12
    D 68 3 99 F4 115 Enter 13
    E 69 4 100 F5 116 Shift 16
    F 70 5 101 F6 117 Control 17
    G 71 6 102 F7 118 Alt 18
    H 72 7 103 F8 119 Caps Lock 20
    I 73 8 104 F9 120 Esc 27
    J 74 9 105 F10 121 Spacebar 32
    K 75 * 106 F11 122 Page Up 33
    L 76 + 107 F12 123 Page Down 34
    M 77 Enter 108 -- -- End 35
    N 78 - 109 -- -- Home 36
    O 79 . 110 -- -- Left Arrow 37
    P 80 / 111 -- -- Up Arrow 38
    Q 81 -- -- -- -- Right Arrow 39
    R 82 -- -- -- -- Down Arrow 40
    S 83 -- -- -- -- Insert 45
    T 84 -- -- -- -- Delete 46
    U 85 -- -- -- -- Help 47
    V 86 -- -- -- -- Num Lock 144
    W 87
    X 88
    Y 89
    Z 90
    0 48
    1 49
    2 50
    3 51
    4 52
    5 53
    6 54
    7 55
    8 56
    9 57



    /****************

    1) 显示桌面:

    很多软件有显示桌面的功能, 并且大家的方法都是遍历窗口, 然后让它们最小化, 其实 win系统给咱们了一个非常方便的WIN键(就是键盘上在CTRL键和ALT键之间的那个带win标志的按键), 利用它, 可以轻松的完成显示桌面的功能.

    keybd_event(VK_LWIN, 0, 0 ,0);
    keybd_event('M', 0, 0 ,0);
    keybd_event('M', 0, KEYEVENTF_KEYUP ,0);
    keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);

    其他的操作也类似, 比如直接显示开始的运行,就把上面的'M'换成'R'即可。

    直接 keybd_event(VK_LWIN, 0, 0 ,0);
    keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);

    直接显示“开始”对话框了。

    2) 实现快速的全选

    很多的时候,比如listctrl实现全选,你可以用listctrl循环设置每一项的状态为选中,多罗索的事情呀。用快捷键试一试CTRL+A,其他的快捷键一样的用法,呵呵,你知道怎么办了吧?

    keybd_event(VK_CONTROL, (BYTE)0, 0 ,0);
    keybd_event('A',(BYTE)0, 0 ,0); //此处可以用 'A', (BYTE)65, 用'a'不起作用.
    keybd_event('A', (BYTE)0, KEYEVENTF_KEYUP,0);
    keybd_event(VK_CONTROL, (BYTE)0, KEYEVENTF_KEYUP,0);

    3) 执行某些特殊的键,比如数字键,大小写,下面是数字键的例子

    bool bState=true; //true为按下NumLock,false反之
    BYTE keyState[256];

    GetKeyboardState((LPBYTE)&keyState);
    if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||
    (!bState && (keyState[VK_NUMLOCK] & 1)) )
    {
    // Simulate a key press
    keybd_event( VK_NUMLOCK,
    0x45,
    KEYEVENTF_EXTENDEDKEY | 0,
    0 );

    // Simulate a key release
    keybd_event( VK_NUMLOCK,
    0x45,
    KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
    0);
    }

    4) 你想CTRL+ALT+DELETE三键一起按下,

    keybd_event(VK_CONTROL, 0, 0 ,0);
    keybd_event(VK_MENU,0, 0 ,0);
    keybd_event(VK_DELETE,0, 0 ,0);

    keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP ,0);
    keybd_event(VK_MENU,0, KEYEVENTF_KEYUP ,0);
    keybd_event(VK_DELETE,0, KEYEVENTF_KEYUP ,0);
    呵呵,这样不会成功呀,因为这几个键直接是操作系统来截获执行的,而模拟键盘只能发向应用程序,所以这种方法不行的(想显示锁定对话框,用 LockWorkStation();)

    5) Window2000/NT/XP已经不提倡用这个函数了,上面的方法只是为了让大家开阔一下思路,怎么替代呢,呵呵,看下面,所以上面的所有代码都可以用这个来完成

    //2000下用这个代替 ,包含 "winable.h"
    INPUT input[4];
    memset(input, 0, sizeof(input));

    input[0].type = input[1].type = input[2].type = input[3].type = INPUT_KEYBOARD;

    input[0].ki.wVk = input[3].ki.wVk = VK_LWIN;
    input[1].ki.wVk = input[2].ki.wVk = 'R';


    //接下来释放它,这一点很重要。
    input[2].ki.dwFlags = input[3].ki.dwFlags = KEYEVENTF_KEYUP;
    input[0].ki.time = input[1].ki.time = input[2].ki.time = input[3].ki.time = GetTickCount();

    SendInput(4, input, sizeof(INPUT));

    感觉比那个有点罗索,呵呵。

    ====================

    附WIN键的部分快捷键:

    WIN键+D=快速的切到桌面,再次点击返回

    WIN键+E=快速打开资源管理器

    WIN键+R=“运行”。

    WIN键+M=全部视窗最小化。

    WIN键+Shift+M=取消全部视窗最小化。

    WIN键+F1=Help。

    WIN键+F=“寻找”。

    WIN键+Ctrl+F=显示“查找电脑”。

    WIN键+Tab=切换工作列的程式。

    WIN键+Break=显示系统内容。

  • 相关阅读:
    c#中使用多线程访问winform中控件的若干问题(转)
    Winform 分页控件(转)
    C#争论:什么时候应该使用var?
    C#的Contains() 值还是引用
    DataTemplate
    DX11_基于GPU_ComputeShader的3D精确拾取
    串行的BitonicSort双调排序
    Directx11_使用Effect框架包装ComputeShader
    Silverlight自适应布局
    poj3626广搜
  • 原文地址:https://www.cnblogs.com/jinjiangongzuoshi/p/3906998.html
Copyright © 2011-2022 走看看