다른 응용 프로그램에서 선택한 텍스트를 복사하여 수정하십시오
문제
백엔드에서 Windows 응용 프로그램이 실행됩니다. 이 응용 프로그램의 기능이 핫 키에 매핑되었습니다. 이 기능에 메시지 상자를 넣고 뜨거운 키를 대체+Ctrl 키+디. 그런 다음 누르면 대체, Ctrl 키 그리고 디 함께 메시지 상자가 나타납니다. 내 응용 프로그램은이 시점까지 잘 작동합니다.
이제 메모장과 같은 다른 응용 프로그램을 사용할 때 특정 텍스트 줄을 선택하고 핫 키를 누르도록이 기능 내에 코드를 작성하고 싶습니다. 대체 + Ctrl 키 + 디 선택한 텍스트를 "_copied"로 복사하여 메모장에 붙여 넣어야합니다.
비슷한 응용 프로그램을 시도한 사람이라면 누구나 귀중한 입력을 도와주세요.
해결책
귀하의 질문에는 두 가지 답변이 있습니다
내 앱이 어떻게 글로벌 핫키를 설정할 수 있습니까?
RegisterHotkey라는 API Funcion을 호출해야합니다
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
편의를 위해 여기에 게시되었습니다.
제휴하지 않습니다 StackOverflow