2009-10-20 3 views
0

이전에 성공한 CodeProject 기사에서 제공된 코드를 사용했지만 Vista/7에서는 부분적으로 만 작동합니다 (UAC로 인해 추측됩니다) . 현재 스레드에서 작동하지만 시스템 전체 활동을 선택하지는 않습니다. 매니페스트에 requireAdministrator를 추가하고 관리되지 않는 어셈블리와 관리되는 어셈블리에 모두 서명하려고 시도했지만 도움이되지 않습니다..NET에서 관리되지 않는 DLL을 사용하는

Using Window Messages to Implement Global System Hooks in C#

내 주요 목표는 실시간으로 정보를 사용할 수 있도록 관리되지 않는 어셈블리의 HSHELL_WINDOWCREATED 및 HSHELL_WINDOWDESTROYED 메시지를 잡으려고 SetWindowsHookEx를 사용하고 C# 응용 프로그램을 통지하는 것입니다. 기본적으로 시스템에서 창을 만들거나 파괴 할 때마다 알 필요가 있습니다.

Vista/7에서는 제대로 작동하는 순수 C/C++ 응용 프로그램을 발견했지만 C#을 선호하는 C/C++에서 전체 응용 프로그램을 작성하고 싶지는 않습니다.

System Wide Hook Example that Works

사람은 그것뿐만 아니라 비스타/7에서 작동하도록 첫째 CodeProject의 기사에서 코드를 수정하는 방법을 알아? 또는 C#에서 타이머 및 유사한 해킹을 만들지 않고도이 작업을 수행 할 수있는 다른 예제가 있습니까? http://wpfklip.codeplex.com :

감사합니다, 마크

답변

2

내 프로그램을 살펴 있습니다. 필자는 시스템 전체 쉘 훅을 구현하여 프로그램이 생성, 활성화 등의 창을 잡을 수 있도록했습니다.

1) Lusid 쉘 후크를 찾고있다 : 그리고 C#을

+1

내가 그 일을 훨씬 쉽게 ...가 User32에서 RegisterShellHookWindow의 존재를 인식하지 못하고 있었다. 이것을 공유해 주셔서 감사합니다! 나는 결국 새로운 것을 배웠습니다. :) 나는 오늘 밤에 그걸 가지고 놀 것이고 만약 내가 그걸 작동시킬 수 있다면, 나는 당신에게 답 신용을 줄 것이다. 다시 한번 감사드립니다. – Lusid

0

하지만 여기서 중요한 점은있다로 작성. 이것들은 Lusid가 링크 된 첫 번째 기사에서 설명한 "DLL 주입"이유로 .NET에서 작동하지 않습니다.

2) 사기꾼이 키보드 후크를 썼습니다. 이것은 C#에서 잘 작동합니다 (특정 응용 프로그램이 아닌 Windows의 일부에서 연결되므로 .NET 주입에 대처할 수 있습니다).

관련 문제