如题

解决方案 »

  1.   

    先发送ctrldown的消息,再发送lbuttondown消息,在发送lbuttonup消息
    最后发送ctrlup消息~~ 或者你可以使用keydb_event mouse_event按照上面那种顺序做就可以了
      

  2.   

    下面的代码是模拟Ctrl+C和Ctrl+V: 
    //Ctrl+C:keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);keybd_event(Ord('C'), MapVirtualKey(Ord('C'), 0), 0, 0);keybd_event(Ord('C'), MapVirtualKey(Ord('C'), 0), KEYEVENTF_KEYUP, 0);keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0)//Ctrl+V:keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);keybd_event(Ord('V'), MapVirtualKey(Ord('V'), 0), 0, 0);keybd_event(Ord('V'), MapVirtualKey(Ord('V'), 0), KEYEVENTF_KEYUP, 0);keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0)**************************按下一个键最好用SendMessage,用sndkey32.pas无疑会增加程序尺寸。组合键(超过两个以上)用sndkey32.pas就显出优势来了。另一种解决方法,下例模拟按下Alt+Down,可参见Delphi SDK的帮助:keybd_event( VK_MENU, MapVirtualKey( VK_MENU, 0 ), 0 , 0 ); // Alt downkeybd_event( VK_DOWN, MapVirtualKey( VK_DOWN, 0 ), 0 , 0 ); // down arrow key downkeybd_event( VK_DOWN, MapVirtualKey( VK_DOWN, 0 ), KEYEVENTF_KEYUP , 0 ); // down arrow key upkeybd_event( VK_MENU, MapVirtualKey( VK_MENU, 0 ), KEYEVENTF_KEYUP , 0 ); // Alt key up让 WIN95 模拟按了一个按键,例如按下 ENTER或者 TAB 键?PostMessage(Object.Handle, WM_KEYDOWN, VK_TAB, 0);换成你要的就行