SetWindowsHookEx in C#

SetWindowsHookEx in C#

SetWindowsHookEx spezifiziert die letzten beiden Parameter folgendermaßen:

  • hMod
  • dwThreadId

Ich bin mir nicht sicher, ob Sie eine .NET-DLL in der erforderlichen Weise verwenden können, aber Sie können es auf jeden Fall versuchen.

Nimm hMod über Marshal.GetHINSTANCE(typeof(Form1).Module) und dwThreadId über Process.Threads. Alternativ dwThreadId einstellen auf 0, wenn Sie einen globalen Hook wollen (d. h. einen Hook für alle GetMessage() Aufrufe im aktuellen Desktop), aber achten Sie auf die Leistungseinbußen.


Folgendes deutet darauf hin, dass dies nicht funktioniert:

Aus „So setzen Sie einen Windows-Hook in Visual C# .NET“


Ich glaube, Sie müssen GetModuleHandle p/aufrufen und verwenden Sie das zurückgegebene Handle für den dritten Parameter von SetWindowsHookEx . Ich glaube auch 0 ist für den vierten Parameter richtig, da Sie keinen bestimmten Thread in der Drittanbieteranwendung einbinden möchten.

Wenn dies bei Ihnen nicht funktioniert, SetWindowsHookEx auf MSDN könnte Sie in die richtige Richtung weisen.