2012-09-20 4 views
1

나는 지금 실행중인 전경 창 응용 프로그램의 제목과 exe 이름을 얻는 방법을 알고 있지만 변경시기를 확인하려면 TTimer을 사용합니다.응용 프로그램 포커스 변경을 어떻게 검색합니까?

Alt + Tab, 작업 표시 줄 응용 프로그램 선택 또는 새 프로그램 시작으로 트리거 된 이벤트를 감지하는 방법이 있습니까?

저는 Delphi 2006과 Windows 7 64 비트를 사용합니다.

+1

'SetWindowsHookEx', 또는'SetWinEventHook'를 검색하십시오. –

+0

방아쇠는 당신이 의미한다고 생각하는 것은 아닙니다. –

+2

[WH_SHELL 또는 WH_CBT 후크 프로 시저가 다른 프로세스의 이벤트를 받도록하려면 어떻게해야합니까?] (http://stackoverflow.com/questions/299370) – NGLN

답변

2

하나의 옵션은 전역 후크를 설치하는 것입니다. CBT hook으로, 시스템은 (다른 것들 중에서) 창이 활성화 될 때마다 후크 프로 시저를 호출합니다. 전역 후크 콜백은 프로세스의 주소 공간에로드되는 dll에 위치하므로 동일한 'bit 'ness를 갖는 프로세스로만 매핑 될 수 있습니다 (Delphi 2006을 사용하면 콜백은 32 비트 프로세스). 또한 상위 권한 (즉, 훅을 설치하는 프로세스가 관리자가 아닌 경우 관리자로 실행되는 응용 프로그램)을 사용하여 생성 된 프로세스의 주소 공간에 매핑 될 수 없습니다. 콜백이 다른 응용 프로그램에서 실행되기 때문에 프로세스 간 통신 메커니즘을 고안해야합니다. 전역 후크를 설치하려면 SetWindowsHookEx을 사용하십시오.

다른 옵션 중 하나는 이벤트 후크 인 SetWinEventHook입니다. in-contextout-of-context의 두 종류가 있습니다. 전 세계 훅처럼 이전 프로세스는 dll에 배치되어 다른 프로세스의 주소 공간에 매핑되므로 동일한 단점이 있습니다. 컨텍스트 외부 이벤트는 가장 느슨한 이벤트입니다. 그들은 통보 할 때 글로벌 후크 나 컨텍스트 이벤트로 프롬프트하지는 않지만 여전히 타이머보다 좋을 수 있다고 생각합니다. 컨텍스트에서 이벤트 후크의 단점 중 하나는 콜백에서 좀 더 코드를 작성해야한다는 것입니다 (f.i. 당신은 자식 윈도우에 대해서조차도 윈도우 포커스 알림을받을 것이고, 당신이 속한 어플리케이션을 해결해야 할 것입니다.

관련 문제