Hi,
zu erst, ja ich hab gesucht! Was ich will ist entweder auf eine beliebige Stelle des Bildschirms klicken oder direkt an eine Stelle in einem Fenster auch wenn es nicht sichtbar ist!
private const int MK_LBUTTON = 0x0001;
private const uint WM_LBUTTONDOWN = 0x0201;
private const uint WM_LBUTTONUP = 0x0202;
[DllImport("user32.dll", CharSet = CharSet.Auto, EntryPoint = "SendMessage")]
public static extern int SendMessage(IntPtr hwnd, uint wMsg,
int wParam,
int lParam);
public void MouseClicken(IntPtr windowhandle, int x, int y)
{
SendMessage(windowhandle, WM_LBUTTONDOWN, MK_LBUTTON, y * 0x10000 + x);
SendMessage(windowhandle, WM_LBUTTONUP, MK_LBUTTON, y * 0x10000 + x);
}
Ich bin mir z.B. mit MK_LBUTTON nicht sicher, da in andere Foren sowas nie benutzt wurde obwohl es in der MSDN steht. Ansonsten weis ich nicht woran es liegen könnte. Ach ist es eigentlich egal ob die WM int oder uint sind, ebenso bei MK da es ja eigentlich konvertiert wird oder?
Bitte helft mir und stellt gemeine Fragen.
Wie, du willst auf etwas klicken, das gar nicht sichtbar ist? Wie soll das denn gehen?
Außerdem würd ich vielleichet eher PostMessage anstatt SendMessage verwenden, nicht dass du auf deinen eigenen (blockierten?) Thread warten musst...
Die meisten WM_*-Werte liegen im positiven int-Bereich, sodass es keinen Unterschied macht.
Was ist denn nun eigentlich deine Frage? Oder wolltest du uns nur zeigen, wie man die Maus fernsteuern kann? 😁
Das Problem liegt daran das SendMessage immer 0 zurück liefert, das bedeutet ja das es nicht verarbeitet wird. Kann das auch an der Anwendung liegen?
Hallo Trivalik,
vielleicht hilft dir auch Mauszeiger kontrollieren (Move, Click) weiter
Danke, damit geht es auf anhieb.
Mir ist nun dabei aufgefallen, das das Sendkey Funktioniert wenn man Cursor.Position setzt. Doch eigentlich sollte es laut MSDN auch nur mit der Funktion gehn. Zumal es bei mir nicht immer funktioniert, das kann aber auch dran liegen weil ich immer gleich zur alten Position zurück springe.