C# için HyperX mouse kütüphanesi

Tam olarak dediğini anlamadım ama farenin kendine has özellikleri dışında şeyleri kullanmak istiyorsan (fareyi hareket ettirmek, tıklamak vesaire) Windows API'yı kullanabilirsin.

[CODE title="C#"][DllImport("user32")]
public static extern int SetCursorPos(int x, int y);

//Farenin pozizyonunu ayarlar.

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);

//Fare ile tıklama yapmanızı sağlar.[/CODE]

Tıklama için daha fazla bilgiyi mouse_event function (winuser.h) - Win32 apps adresinde bulabilirsiniz.
 
Tam olarak dediğini anlamadım ama farenin kendine has özellikleri dışında şeyleri kullanmak istiyorsan (fareyi hareket ettirmek, tıklamak vesaire) Windows API'yı kullanabilirsin.

[CODE title="C#"][DllImport("user32")]
public static extern int SetCursorPos(int x, int y);

//Farenin pozizyonunu ayarlar.

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);

//Fare ile tıklama yapmanızı sağlar.[/CODE]

Tıklama için daha fazla bilgiyi mouse_event function (winuser.h) - Win32 apps adresinde bulabilirsiniz.
İstediğim şey mouse hareketlerini simüle etmek değil. Mouse'un makro butonlarını kullanmak.
 

Bu makaleler size yardımcı olabilir.

Farenin üzerindeki makro butonları aslında XBUTTON olarak geçiyor. Bu butonların 2. makaledeki kodlarını ve Windows API'yi kullanarak butonları çalıştırabilirsiniz.

[CODE title="C#"]mouse_event(MOUSEEVENTF_XDOWN, NULL, NULL, XBUTTON1, NULL);
mouse_event(MOUSEEVENTF_XDOWN, NULL, NULL, XBUTTON2, NULL);
mouse_event(MOUSEEVENTF_XUP, NULL, NULL, XBUTTON1, NULL);
mouse_event(MOUSEEVENTF_XUP, NULL, NULL, XBUTTON2, NULL);[/CODE]
 

Bu makaleler size yardımcı olabilir.

Farenin üzerindeki makro butonları aslında XBUTTON olarak geçiyor. Bu butonların 2. makaledeki kodlarını ve Windows API'yi kullanarak butonları çalıştırabilirsiniz.

[CODE title="C#"]mouse_event(MOUSEEVENTF_XDOWN, NULL, NULL, XBUTTON1, NULL);
mouse_event(MOUSEEVENTF_XDOWN, NULL, NULL, XBUTTON2, NULL);
mouse_event(MOUSEEVENTF_XUP, NULL, NULL, XBUTTON1, NULL);
mouse_event(MOUSEEVENTF_XUP, NULL, NULL, XBUTTON2, NULL);[/CODE]
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.
 
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.


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.
 

Technopat Haberler

Yeni konular

Geri
Yukarı