2009-11-22 7 views
2

글로벌 쉘 훅을 사용하여 생성 된 이벤트 및 파괴 된 이벤트를 수신하려고하지만 내 프로그램이 로컬 스레드에 대해 삭제 된 이벤트 만 등록하는 것처럼 보입니다. 창조론은 전혀 일어나지 않으며, 분명히 내가 생각하는 지구 적 사건도 아닙니다.글로벌 쉘 훅 로컬 이벤트 만 등록

나는 codeguru, codeproject, msdn과 같이 Google 검색에서 마지막 날을 보냈지 만 명확하지는 않지만 올바른 일을하고있는 것처럼 보입니다. 아무도 올바른 방향으로 나를 가리킬 수 있습니까?

다음은 셸에 연결하는 코드입니다.이 코드는 모두 올바른 것으로 보이지만 다시 올바른 출력을 제공하지 않습니다. 지금 ShellProc 함수는 윈도우에서 사소한 변수 증분을 수행하도록 설정되어 있습니다. 중단 점을 설정하는 행에 대해서만 메시지를 작성하고 소멸 시키지만 프로그램은 국지 창의 파괴 메시지에 대한 중단을 히트합니다. 다시 한번, 어떤 도움이 환상적 일 것입니다, 대단히 감사드립니다.

답변

0

이 문제가 발생하는 한 가지 이유는 32 비트 DLL을 컴파일하고 64 비트 OS에서 실행하려고하기 때문입니다. 일반적으로이 후크를 설치하여 무엇을 달성하려고합니까? 후크는 제대로 작동하기 어렵고 핸들러에서 너무 오래 걸릴 경우 등록이 취소 될 수 있습니다.

+0

32 비트 DLL을 컴파일 중이지만 32 비트 OS이기 때문에 문제가되지 않습니다. RocketDock에 대한 단축키가 이미 없거나 프로그램이 최소화되지 않은 경우에도 실행중인 프로그램을 보여주는 점에서 Windows 작업 표시 줄처럼 작동하는 RocketDock에 대한 추가 기능을 작성하려고합니다. 이 목표를 달성 할 수있는 더 좋은 방법이 있다면, 나는 모든 귀입니다. 그러나 인터넷에서 이런 종류의 정보에 대한 놀랍도록 작은 정보가있는 것 같습니다. – etna

0

응용 프로그램의 어딘가에서 HWND 핸들을 사용하는 경우 쉘 훅으로 창을 사용할 수 있습니다 (RegisterShellHookWindow). 이렇게하면 창 메시지 펌프를 통해 생성되고 파괴 된 창에 대한 전역 셸 알림을 받게됩니다.