Copy and Modify selected text in different application

孤街浪徒 提交于 2019-11-27 01:29:13

问题


I have a windows application running at the backend. I have functions in this applications mapped to hot keys. Like if I put a message box into this function and give hot key as Alt+Ctrl+D. then on pressing Alt, Ctrl and D together the message box comes up. My application is working fine till this point.

Now I want to write a code inside this function so that when I am using another application like notepad, I select a particular line of text and press the hot key Alt + Ctrl + D it is supposed to copy the selected text append it with "_copied" and paste it back to notepad.

Anyone who has tried a similar application please help me with your valuable inputs.


回答1:


Your question has two answers

How can my app set a global hotkey

You have to call an API funcion called RegisterHotKey

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
);

More info here: http://www.codeproject.com/KB/system/nishhotkeys01.aspx

How to get the selected text from the foreground window

Easiest way is to send crl-C to the window and then capture the clipboard content.

[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

}

Disclaimer: Code by Marcus Peters from here: http://bytes.com/forum/post1029553-5.html
Posted here for your convenience.




回答2:


Use the Clipboard class to copy the contents to the clipboard, then paste in the notepad.

You could also write the contents to a text file and open it with notepad by running the notepad.exe application with the text file's path as a command line parameter.




回答3:


I think you can use SendInput function to send the text to the target window or just the command to paste it if you have put it in clipboard before.



来源:https://stackoverflow.com/questions/235972/copy-and-modify-selected-text-in-different-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!