Mouse çıktısı değil, mouse'dan veri almak istiyorum. Simüle etmek istemiyorum. Mouse'un makro butonlarına basılınca kod çalıştırmak istiyorum. Makrolardan birine basılınca bir kod çalıştırcak başkasına basınca başka kod. Makro tuşları methodları tetikleyecek.
Sizin için biraz araştırdım. Dediğiniz için Windows tabanında Hook ayarlamak gerekiyor.
[CODE title="C#"][DllImport("user32.dll")]
static extern int SetWindowsHookEx(int idHook, MouseProc lpfn, int hInstance, int threadId);
[DllImport("user32.dll")]
static extern int CallNextHookEx(int idHook, int nCode, IntPtr wParam, IntPtr lParam);
delegate int MouseProc(int nCode, IntPtr wParam, IntPtr lParam);
int hookID = 0;
MouseProc hookCallback = null;
private int HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
if (0x200 == (int)wParam)
{
//Yakalanan wParam parametresi fare hareketi ise
}
return CallNextHookEx(hookID, nCode, wParam, lParam); //Sonraki hooku döndür
}
public Form1()
{
InitializeComponent();
hookCallback = new MouseProc(HookCallback); //Hook dönüşleri için gerekli delegate
hookID = SetWindowsHookEx(14, hookCallback, 0, 0); //Hook kaydı ve oluşturulan Hook'un idsi
}[/CODE]
Orada belirtilen
0x200
fare hareket kodu.
Posted when the user presses either XBUTTON1 or XBUTTON2 while the cursor is in the client area of a window.
docs.microsoft.com
Bu makaleden tüm kodlara ulaşabilirsiniz. Makro butonlarına sahip bir farem olmadığı için tam olarak hangi kodun çalıştığımı bilemiyorum fakat
HookCallback
metoduna bir breakpoint koyup bu butonlara bastığınızda wParam'ın hangi değerde geldiğini bularak yapabilirsiniz.
Tuşlar basıldığında ve bırakıldığında ayrı mesajlar gönderiyor.