2010-05-24 6 views
2

누군가가 아래에 구현 된대로 WndProc 메서드가 메시지를받지 못하는 이유에 대해 조명 해 주실 수 있습니까? 이 클래스를 WinForms 응용 프로그램에 넣고 응용 프로그램 핸들을 전달하면 WndProc은 예상대로 메시지를 수신합니다. 그러나 아래에 나와있는대로 GetForegroundWindow()에서 반환 된 IntPtr을 사용하면 동일한 결과가 산출되지 않습니다. (FWIW, 응용 프로그램이 숨겨져있을 때 GetForegroundWindow()을 실행하도록 코드를 설정 했으므로 IntPtr이 외부 응용 프로그램을 참조하고 있음을 확신합니다.) 여기 내 목표는 외부 응용 프로그램의 특정 이벤트를 모니터링하는 것입니다.NativeWindow WndProc가 메시지를받지 못했습니다.

public class MyNativeWindow : NativeWindow 
{ 
    [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)] 
    private static extern IntPtr GetForegroundWindow(); 

    public MyNativeWindow() 
    { 
     this.AssignHandle(GetForegroundWindow()); 
    } 

    // Never called... I set a breakpoint 
    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")] 
    protected override void WndProc(ref Message m) 
    { 
     base.WndProc(ref m); 
    } 
} 

답변

2

다른 프로세스의 메시지는받지 않습니다.

+0

다른 프로세스의 메시지를받는 방법에 대한 제안 사항이 있습니까? –

+1

내가 생각할 수있는 유일한 방법은 대상 프로세스에 DLL을 삽입하는 것입니다. "dll injection"으로 검색하십시오. – deerchao

+0

소리가 지저분합니다. ;) 나는 그것을 조사 할 것이다 ... –

관련 문제