可以用keybd_event()来实现是吧?
但我不知道里面的参数要怎么写,比如我要模拟输入A,具体要怎么写?大家帮个忙!!! 谢谢!

解决方案 »

  1.   

    ::keybd_event(0x56,::MapVirtualKey(0x56,0),0,0);
    ::keybd_event(0x56,::MapVirtualKey(0x56,0),KEYEVENTF_KEYUP,0);这是模拟字母键V的按下和抬起
      

  2.   

    模拟Ctrl+A按下:keybd_event(VK_CONTROL, 0, 0 ,0);
    keybd_event('A',  0, 0 ,0);
    keybd_event('A',  0, KEYEVENTF_KEYUP,0);
    keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP,0);其它类似...
      

  3.   

    函数说明:VOID keybd_event( BYTE bVk, BYTE bScan, DWORD dwFlags, 
    DWORD dwExtraInfo );ParametersbVk[in] Specifies a virtual-key code. The code must be a value in the range 1 to 254. bScan[in] Specifies a hardware scan code for the key. dwFlags[in] Specifies various aspects of function operation. An application can use any combination of the following predefined constant values to set the flags. Value Description 
    KEYEVENTF_KEYUP If specified, the key is being released. If not specified, the key is being depressed. 
    KEYEVENTF_SILENT If specified, a keystroke is simulated, but no clicking sound is made. 
    dwExtraInfo[in] Specifies an additional 32-bit value associated with the key stroke. Return ValuesNone.ResWhen keyboard input is disabled with EnableHardwareKeyboard(FALSE), you can simulate keyboard input using keybd_event.Although keybd_event passes an OEM-dependent hardware scan code to the system, applications should not use the scan code. The system converts scan codes to virtual-key codes internally and clears the up/down bit in the scan code before passing it to applications. An application can simulate a press of the PRINTSCREEN key in order to obtain a screen snapshot and save it to the clipboard. To do this, call keybd_event with the bVk parameter set to VK_SNAPSHOT, and the bScan parameter set to 0 for a snapshot of the full screen or set bScan to 1 for a snapshot of the active window. 
      

  4.   

    常用的控制键:VK_CONTROL  //Ctrl
    VK_RCONTROL //右Ctrl
    VK_LCONTROL  //左Ctrl
    VK_RMENU   //右Win
    VK_LSHIFT  
    VK_RSHIFT 
    VK_LMENU
    VK_SHIFT 
    VK_MENU 
      

  5.   

    例子:   void SetNumLock( BOOL bState )
       {
          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);
          }
       }   void main()
       {
          SetNumLock( TRUE );
       }
      

  6.   


    VK_LBUTTON   01 Touch screen   
    VK_CANCEL    03 Control-break processing  —— 05-07 Undefined  VK_BACK      08 BACKSPACE key  
    VK_TAB       09 TAB key  —— 0A-0B Undefined  VK_CLEAR     0C CLEAR key  
    VK_RETURN    0D ENTER key  —— 0E-0F Undefined  VK_SHIFT     10 SHIFT key  
    VK_CONTROL   11 CTRL key  
    VK_MENU      12 ALT key  
    VK_CAPITAL   14 CAPS LOCK key  —— 15-19 Reserved for Kanji systems  
    —— 1A Undefined  VK_ESCAPE    1B ESC key  —— 1C-1F Reserved for Kanji systems  VK_SPACE     20 SPACEBAR key 
    VK_PRIOR     21 PAGE UP key  
    VK_NEXT      22 PAGE DOWN key  
    VK_END       23 END key  
    VK_HOME      24 HOME key  
    VK_LEFT      25 LEFT ARROW key  
    VK_UP        26 UP ARROW key  
    VK_RIGHT     27 RIGHT ARROW key  
    VK_DOWN      28 DOWN ARROW key  
    VK_SELECT    29 SELECT key  —— 2A Original equipment manufacturer (OEM)– specific  VK_EXECUTE   2B EXECUTE key  
    VK_SNAPSHOT  2C PRINT SCREEN key for Windows 3.0 and later  
    VK_HELP      2F HELP key  VK_0         30 0 key  
    VK_1         31 1 key  
    VK_2         32 2 key  
    VK_3         33 3 key  
    VK_4         34 4 key  
    VK_5         35 5 key  
    VK_6         36 6 key  
    VK_7         37 7 key  
    VK_8         38 8 key  
    VK_9v        39 9 key 
     
    —— 3A-40 Undefined  VK_A         41 A key  
    VK_B         42 B key  
    VK_C         43 C key  
    VK_D         44 D key  
    VK_E         45 E key  
    VK_F         46 F key  
    VK_G         47 G key  
    VK_H         48 H key  
    VK_I         49 I key  
    VK_J         4A J key  
    VK_K         4B K key  
    VK_L         4C L key  
    VK_M         4D M key  
    VK_N         4E N key  
    VK_O         4F O key  
    VK_P         50 P key  
    VK_Q         51 Q key  
    VK_R         52 R key  
    VK_S         53 S key  
    VK_T         54 T key  
    VK_U         55 U key  
    VK_V         56 V key  
    VK_W         57 W key  
    VK_X         58 X key  
    VK_Y         59 Y key  
    VK_Z         5A Z key 
     
    —— 5B-5F Undefined  VK_NUMPAD0   60 Numeric keypad 0 key  
    VK_NUMPAD1   61 Numeric keypad 1 key  
    VK_NUMPAD2   62 Numeric keypad 2 key  
    VK_NUMPAD3   63 Numeric keypad 3 key  
    VK_NUMPAD4   64 Numeric keypad 4 key  
    VK_NUMPAD5   65 Numeric keypad 5 key  
    VK_NUMPAD6   66 Numeric keypad 6 key  
    VK_NUMPAD7   67 Numeric keypad 7 key  
    VK_NUMPAD8   68 Numeric keypad 8 key  
    VK_NUMPAD9   69 Numeric keypad 9 key  
    VK_MULTIPLY  6A Asterisk (*) key  
    VK_ADD       6B Plus sign (+) key  
    VK_SEPARATOR 6C Separator key  
    VK_SUBTRACT  6D Minus sign (–) key  
    VK_DECIMAL   6E Period (.) key  
    VK_DIVIDE    6F Slash  (/) key  —— 88-8F Unassigned  
    —— 92-B9 Unassigned  
    —— BA-C0 OEM-specific  
    —— C1-DA Unassigned  
    —— DB-E4 OEM-specific  
    —— E5 Unassigned  
    —— E6 OEM-specific  
    —— E7-E8 Unassigned  
    —— E9-F5 OEM-specific  VK_ATTN     F6   
    VK_CRSEL    F7 
    VK_EXSEL    F8 
    VK_EREOF    F9 
    VK_PLAY     FA 
    VK_ZOOM     FB 
    VK_NONAME   FC 
    VK_PA1      FD 
    VK_EM_CLEAR FE 
    VK_LWIN     5B 
    VK_RWIN     5C 
    VK_APPS     5D 
    VK_LSHIFT   A0 
    VK_RSHIFT   A1 
    VK_LCONTROL A2 
    VK_RCONTROL A3 
    VK_LMENU    A4 
    VK_RMENU    A5 
    兄弟,够详细了吧?!
      

  7.   

    再问个问题::我在程序中运行了telnet,如何把虚拟的键盘输出指定为针对那个telnet窗口呢?
      

  8.   

    先用WindowFromPoint()找到telnet窗口的句柄。
    再用PostMessage()发送按键消息给它,或者用keybd_event()
    具体用法请查MSDN.