2010-02-24 2 views
2

RegisterHotKey Win32 API를 사용하여 Ctrl_V 키 조합을 수신하고 WndProc 메서드를 사용하여이 바로 가기 키 알림을 처리합니다. 이제는 base.WndProc (ref mesg) 호출과는 별도로이 메서드에서 아무 작업도 수행하지 않더라도 붙여 넣기 작업이 Windows로 전달되는 것처럼 보이지 않으므로 붙여 넣기가 작동하지 않습니다. SendKeys ("^ V")를 명시 적으로 호출하여 텍스트를 붙여 넣을 수는 있었지만 텍스트가 아닌 데이터에서는 작동하지 않습니다. 나는 또한 SendMessage Win32 API를 아래와 같이 시도했다.프로그래밍 방식으로 텍스트가 아닌 개체를 붙여 넣기 위해 SendKeys 또는 SendMessage를 사용할 수 없습니다.

SendMessage(foregroundWindowHandle, 0x302, 0, 0); 

심지어 이것은 작동하지 않는다.

내 코드를 실행하는 방법을 알아낼 수 없으며 Windows에서 이미지, 파일 등의 붙여 넣기를 수행하도록 할 수 없습니다.이 문제를 해결할 수있는 도움은 매우시의 적절하며 높이 평가됩니다.

업데이트 : 붙여 넣기 명령을 생성 한 창에서 초점을 다시 얻지 못하는 문제가 있음을 알았습니다. 이 문제를 해결 한 후 붙여 넣기가 메모장에서 잘 작동합니다. 또한 기본 붙여 넣기 명령과의 충돌을 피하기 위해 Alt_Shift_V를 바로 가기 키로 사용하고 있습니다. 따라서 텍스트가 아닌 데이터를 붙여 넣는 것이 좋습니다. 그러나 Visual Studio 및 Office 응용 프로그램에 텍스트를 붙여 넣을 수 없습니다. SendKeys ("^ V")는 이러한 응용 프로그램에서 다른 방식으로 해석되는 것 같습니다. 이 방법을 얻는 방법에 대한 아이디어가 있습니까?

+1

을 방해하지 않을 : 간단하고 편리한 글로벌 후크 구현을위한

코드에서 찾을 수 있습니까? 전경 창이 텍스트 만 받아 들일 수 있습니까? – Seth

+0

나는 붙여 넣기가 정확히 끝나지 않았습니다. 붙여 넣기 명령을 처음 창에서 생성 한 창에 전달하려고합니다. 이미지의 경우 익스플로러와 MS 페인트로 시도했습니다. Windows 탐색기에서 파일 복사 - 붙여 넣기를 시도했지만 행운이 없었습니다 – Sanket

답변

1

단축키를 등록하는 대신 글로벌 후크를 등록하십시오.

전 세계 후크를 사용하여 이전에 수행했던 것과 비슷한 작업을 수행했으며 매우 잘 작동합니다.

http://www.codeproject.com/KB/cs/globalhook.aspx

이가 붙여 넣기 작업 : 당신은 무엇에 붙여 넣을

+0

질문 다시 읽기 내 제안이 도움이되지 않는 경우에 붙여 넣기 작업 이전에 작업을 수행 할 수 있습니다. 어쨌든 유용 할 경우를 대비하여 그것을 남겨 둘 것입니다. :) – omglolbah

+0

고마워 톤 omglolbah, 글로벌 후크를 사용하여 나를 위해 트릭을 했어! – Sanket

0

Ctrl-V 키 메시지 (WndProc 통해)를 가로 채고, 필요한 것을 수행 한 다음 base.WndProc이 키 메시지를 처리하도록해야한다고 생각합니다. OnKeyDown 이벤트를 처리 할 수도 있습니다. WinForms에서 자식 컨트롤 전에 메시지를 보려면 Form.KeyPreview를 true로 설정할 수 있습니다.

+0

Timores에게 감사드립니다. 내 질문에 언급했듯이 base.WndProc()을 호출하지만 붙여 넣기가 작동하지 않습니다. – Sanket

0

몇 가지 조치를 취한 다음 메시지를 전달하려는 경우 단축키를 등록하는 것은 해결책이 아닙니다. 대신에 키보드 훅 (SetWindowsHookEx API)이 필요할 것 같습니다.

+0

Mattias에게 감사드립니다. 나는 조사 할 것입니다. 하지만 지금 Ctrl_V에 대한 후크를 추가하는 것은 아마도 지금 Alt_Shift_V를 바로 가기 키로 사용하고 있기 때문에 작동하지 않을 수 있습니다. 업데이트 된 질문을 참조하십시오 – Sanket