2009-06-08 3 views
0

winforms 응용 프로그램에 반복적으로 보낸 Windows 메시지를 원합니다. 이제는 선택한 메시지 (WM _KEYDOWN, WM _LBUTTONDOWN 등)를 목록에 저장하는 "IMessageFilter"클래스를 구현했습니다.Winforms에서 Windows 메시지 반복

"일시 중지/중단"키에서 메시지 목록을 복사하고 원래 목록을 지우고 메시지를 다시 보냅니다.

내 테스트 프로젝트에는 하나의 메뉴 항목, 탭 하나 및 richtextbox가있는 유일한 양식입니다. 컨트롤의 hWnd는 메시지를 저장하고 반복하는 동안 동일합니다.

모두 정상적으로 작동하지만 메시지를 보내지 못했습니다. /.

샘플 코드 : 그것은 너무 쉽게 보이지만, 문제가 될 수있는 곳 모른다

[System.Runtime.InteropServices.DllImport("user32")] 
public static extern int SendMessage(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam); 

// ... in some method ... 
SendMessage(msg.HWnd, msg.Msg, msg.WParam, msg.LParam); 

.

답변

1

메시지 필터가 적용 되었습니까? 메시지를 보내는 데 방해가되지 않겠습니까? 다른 가능성은 문제의 메시지를 보내지 말고 게시해야한다는 것입니다. 또는 대상 창에 대한 올바른 스레드에서 메시지를 보내야 할 수도 있습니다.

+0

MessageFilter는 항상 "false"를 반환하므로 실제로 필터링 된 메시지가 없습니다. 하지만 SendMessage 대신 PostMessage를 사용해보십시오. 감사합니다. – TcKs

+0

PostMessage가 올바른 팁이었습니다. 자, 이제 좋아 보인다. 감사! – TcKs