我有一个在后端运行的Windows应用程序.我将此应用程序中的函数映射到热键.就像我将一个消息框放入此功能并将热键设为Alt+ Ctrl+一样D.然后压制Alt,Ctrl并D一起消息框出现.我的申请工作正常,直到这一点.
现在我想在这个函数中编写一个代码,这样当我使用像记事本这样的另一个应用程序时,我选择一个特定的文本行并按热键Alt+ Ctrl+ D它应该复制所选文本,并附加"_copied"和将它粘贴回记事本.
任何尝试过类似申请的人都可以帮助我提供宝贵的意见.
你的问题有两个答案
你必须调用一个名为RegisterHotKey的API函数
BOOL RegisterHotKey( HWND hWnd, // window to receive hot-key notification int id, // identifier of hot key UINT fsModifiers, // key-modifier flags UINT vk // virtual-key code );
更多信息:http://www.codeproject.com/KB/system/nishhotkeys01.aspx
最简单的方法是将crl-C发送到窗口然后捕获剪贴板内容.
[DllImport("User32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll", CharSet=CharSet.Auto)] static public extern IntPtr GetForegroundWindow(); [DllImport("user32.dll")] static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo); ..... private void SendCtrlC(IntPtr hWnd) { uint KEYEVENTF_KEYUP = 2; byte VK_CONTROL = 0x11; SetForegroundWindow(hWnd); keybd_event(VK_CONTROL,0,0,0); keybd_event (0x43, 0, 0, 0 ); //Send the C key (43 is "C") keybd_event (0x43, 0, KEYEVENTF_KEYUP, 0); keybd_event (VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);// 'Left Control Up }
免责声明:Marcus Peters的代码来自这里:http://bytes.com/forum/post1029553-5.html
发布在这里为了您的方便.