Laden...

mouse-Events global abfangen

Erstellt von der_Brain vor 19 Jahren Letzter Beitrag vor 19 Jahren 5.446 Views
D
der_Brain Themenstarter:in
56 Beiträge seit 2004
vor 19 Jahren
mouse-Events global abfangen

hallo community again!

ich such ja immer noch verzweifelt jemanden der mir helfen kann mein problem zu lösen.
ich versuche global die mouse-Events einzufangen, und hab jetzt im netz ein bissell code gefunden, der aber noch nich so ganz hinhaut.

das soll eine class werden die die Events (rechtsclick, linksclick, mittelclick, doppelclick) erkennt

und dann möchte ich aus einer anderen class auf die events zugreifen können, um sie dann in eine log-Datei zu schreiben


public class Win32Hook
{
 [DllImport("kernel32")]
 public static extern int GetCurrentThreadId();

 [DllImport( "user32", 
CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
 public static extern int  SetWindowsHookEx(
  HookType idHook,
  HOOKPROC lpfn,
  int hmod,
  int dwThreadId);

 public enum HookType
 {
  WH_MOUSE = 7
 }

 public delegate int HOOKPROC(int nCode, int wParam, int lParam);

 public void SetHook()
 {
  // set the keyboard hook
  SetWindowsHookEx(HookType.WH_MOUSE,
   new HOOKPROC(this.MyMouseProc),
   0,
   GetCurrentThreadId());
 }

 public int MyMouseProc(int nCode, int wParam, int lParam)
 {
  //Perform your process
  Console.WriteLine("Mouse");
  return 0;
 }
}

Win32Hook hook = new Win32Hook();
hook.SetHook();

In the callback procedure, you may call the GetChildAtPoint method to 
determine which control the mouse is on and perform the corresponding 
actions.


ich hoffe ihr könnt den code verstehen?!?!
und sorry das ich keine ahnung von winapi hab, deshalb bitte verständliche antworten schreiben!

dank im voraus

mfg
der_Brain

E
2 Beiträge seit 2004
vor 19 Jahren

Globale Hooks müssen in einer eigenen DLL liegen, da jedes Programm das gerade läuft diese DLL in seinen geschützten Speicher laden muss.
Was natürlich bedeutet, dass die DLL nicht "gemanaget" sein darf (sprich du musst die DLL in C proggen).

Zum Glück gibts allerdings schon fertige Bindings:
http://www.codeproject.com/csharp/GlobalSystemHook.asp

R
139 Beiträge seit 2004
vor 19 Jahren

wow ist das performance hungrig...

posted by the real prince of persia