2010-05-24 5 views
2

Может ли кто-то пролить свет на то, почему мой метод WndProc, как реализовано ниже, не принимает никаких сообщений? Если я помещаю этот класс ниже в приложение WinForms и передаю в , что дескриптор приложения, WndProc получает сообщения, как я ожидал. Однако использование IntPtr, возвращаемое с GetForegroundWindow(), как я уже говорил ниже, не дает тех же результатов. (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

Звучит беспорядочно. ;) Я проверю это... –

Смежные вопросы