2012-06-13 2 views
0

내가 응용 프로그램의 모든 클릭을 기록 로그 시스템 ('외부'응용 프로그램)을 만드는거야를 수정하지 않고 마우스 아래의 컨트롤을 찾을 수 있습니다. 마우스에서 클릭을 감지하는 PreFilterMessage 기능을 설정했지만 클릭 한 컨트롤/요소를 찾을 수 없습니다.WPF 응용 프로그램

나는 Mouse.DirectlyOver와 시도했지만 요소는 항상 null입니다. 나는 VisualTreeHelper.HitTest도 시도했지만 검색을 위해 Visual이 없습니다.

메인 메서드 (Application.Run(new MainForm());Application.AddMessageFilter(new Logger());)에만 액세스 할 수 있습니다. 응용 프로그램 내부에 액세스 할 수 없습니다.

누구든지 응용 프로그램 (.Net 3.5)에서 클릭 된 컨트롤을 얻는 방법에 대한 아이디어가 있거나 주위를 산책하고 있습니까?

답변

3

저는 스누프라고 불리는 놀라운 애플리케이션을 사용하고 있습니다. 오픈 소스 (C#)가 무엇인지 정확히 알고 있다고 생각하기 때문에 스누프라고하는 방법을 알 수 있다면 사용하는 것이 좋습니다. 공장.

http://snoopwpf.codeplex.com/

+0

스눕는 VisualTreeHelper.HitTest' 및'을 사용할 수 있도록의 스누핑 과정에 자신의 어셈블리를 주입하여 작동합니다 (롤 모든 WPF 개발자는이를 받아야없이 나는 스눕 작동하지 않습니다). 나는 그것이 좋은 출발점이라고 생각한다. –