Может ли кто-то пролить свет на то, почему мой метод 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);
}
}
Есть ли какие-либо предложения относительно того, как я могу получать сообщения других процессов? –
Единственный способ, которым я могу думать, это ввести dll в целевой процесс. Поиск «dll injection» – deerchao
Звучит беспорядочно. ;) Я проверю это... –