复制和修改不同应用程序中的选定文本

我有一个在后端运行的Windows应用程序。 我将此应用程序中的函数映射到热键。 就像我将一个消息框放入此function并将热键设为Alt + Ctrl + D. 然后按下AltCtrlD一起出现消息框。 我的申请工作正常,直到这一点。

现在我想在这个函数中编写一个代码,这样当我使用另一个像记事本这样的应用程序时,我选择一个特定的文本行并按热键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
发布在这里为了您的方便。

使用Clipboard类将内容复制到剪贴板,然后粘贴到记事本中。

您还可以将内容写入文本文件,并通过运行notepad.exe应用程序并使用文本文件的路径作为命令行参数,使用记事本打开它。

我认为您可以使用SendInput函数将文本发送到目标窗口,或者只是在您之前将其放入剪贴板时粘贴它的命令。