Hej! Tack för ditt svar:Mousehook, if mouseUP
http://support.microsoft.com/default.aspx?scid=kb;en-us;318804
Jag följde den "tutorialen" ok det fungerar som det ska, vid en musrörelse så körs funktionen och skriver ut musen X och Y position.
Nu vet jag dock inte hur jag gör för att funktionen bara ska köras om man har tryck på musknappen.
Jag hoppas att ni kan hjälpa mig med det:
if (nCode < 0)
{
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
else
{
mouseClick();
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
den delen koden gör så att mouseClick(); körs när man rör musen, nu vill jag på något sätt, antagligen med en if sats kolla ifall man trycker ner eller släpper upp musknappen, i så fall ska funktionen köras inte annars.
Hoppas ni kna hjälpa mig med det :)
TackSv: Mousehook, if mouseUP
private const int WM_LBUTTONUP = 0x0202;
...
if (nCode < 0)
{
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
else
{
if (wParam.ToInt32() == WM_LBUTTONUP)
mouseClick();
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
Sv:Mousehook, if mouseUP
Jag har löst det mesta nu förutom en enstaka grej :/
//If someone listens to click and a click is happened
if (s_MouseClick != null && clickCount > 0)
{
if (!mouseWasDown)
{
mouseWasDown = true; // ignore duplicate mouse down events
s_MouseClick.Invoke(null, e);
mouseEvents.mouseClick(button);
}
else
{
if (mouseEvents._JustClicked == false)
{
mouseWasDown = false;
}
}
}
class MouseEvents
{
[DllImport("user32.dll")]
private static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, UIntPtr dwExtraInfo);
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;
public bool _JustClicked;
public void mouseClick(MouseButtons button)
{
if (!_JustClicked)
{
//Call the imported function with the cursor's current position
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
if (button == MouseButtons.Left)
{
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, UIntPtr.Zero);
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, UIntPtr.Zero);
}
else
{
//mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, X, Y, 0, UIntPtr.Zero);
}
_JustClicked = true;
}
else
{
_JustClicked = false; // don't fire it again since we just did that.
}
}
}
Alla filer kan hämtas på: http://www.webbhelp.se/PlayersDream.rar
Problemet nu är att när man trycker på musknappen så simulerar koden 1 klick och och sen händer inget mer, så ska det vara, dock så: lägger jag till så att när jag trycker på musknappen så ska den simulera 2 stycken klick istället för 1, då klickar den ca 15-20 klick, nånting buggar!
Jag skulle blivit jätteglad om ni kollade i min kod, i filerna: hookmanager.callbacks och mouseevents, där är koderna jag arbetar med mouseevents är den som simulerar click, och hookmanager.callbacks är den som lyssnaar efter klick