다른 응용 프로그램에서 선택한 텍스트를 복사하여 수정하십시오

StackOverflow https://stackoverflow.com/questions/235972

  •  04-07-2019
  •  | 
  •  

문제

백엔드에서 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
편의를 위해 여기에 게시되었습니다.

다른 팁

사용 클립 보드 클래스를 클립 보드에 복사 한 다음 메모장에 붙여 넣습니다.

텍스트 파일의 경로를 명령 줄 매개 변수로 사용하여 Notepad.exe 응용 프로그램을 실행하여 Notepad로 내용을 텍스트 파일에 작성하고 열 수 있습니다.

나는 당신이 사용할 수 있다고 생각합니다 SendInput 텍스트를 대상 창으로 보내거나 이전에 클립 보드에 넣은 경우 붙여 넣기 위해 텍스트를 보내십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top