다른 응용 프로그램에서 특정 창 메시지 (RegisterWindowMessage
로 등록 된 사용자 지정 메시지)를 브로드 캐스트하는 경우 해당 구성을 다시로드해야하는 셸 확장이 있습니다.셸 확장자에서 창 메시지를 가로 채는 방법
, Windows 탐색기의 창에서 창 서브 클래스 콜백을 설치
나는 메시지를 가로 채기 위해 여러 가지 방법을 시도했다. Windows 7에서는 작동하지만 Windows 8에서는 작동하지 않습니다. 왜냐하면SetWindowSubclass
를 사용하여 :DllMain
이 주 스레드에서 호출되지 않고SetWindowSubclass
이 다른 스레드에서 작동하지 않기 때문입니다. 이것은 문서에서 언급 한 : 당신은SetWindowsHookEx
를 사용하여,CALLWNDPROC
에 대한 후크를 설치 스레드에 걸쳐 창을 하위 클래스로 서브 클래 싱 도우미 기능을 사용할 수 없습니다
. 전체 시스템의 속도를 늦추고 싶지 않기 때문에 특정 스레드 (탐색기의 주 스레드)에 대한 후크 만 설치합니다. 이것은 Windows 8에서 작동하지만 Windows 7에서는 작동하지 않습니다 ... 잘못된 스레드에서 연결하고 있기 때문에 이것이 의심 스럽지만 확실하지 않습니다. 어쨌든이 접근법은 지나치게 관입 적이기도합니다.
메시지를 처리하기위한 메시지 전용 창 만들기. 메시지 전용 창은 브로드 캐스트 메시지를 수신하지 않기 때문에 전혀 작동하지 않습니다.
셸 확장에서 신뢰할 수있는 방법으로 창 메시지를받을 수 있습니까?
처음에는 창 메시지가 셸 확장에 통보하는 가장 쉬운 방법 인 것처럼 보였지만 다른 메커니즘이 더 적절할 것이라고 생각되면 제안에 대한 답변을 제공합니다.
어떤 종류의 셸 확장입니까? –
@SimonMourier, 아이콘 오버레이 및 컨텍스트 메뉴 핸들러 –