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