Chcę symulować ruch myszy co x sekund. W tym celu użyję timera (x sekund) i gdy tykasz zegar, wykonam ruch myszy.Jak przesunąć kursor myszy za pomocą C#?
Ale w jaki sposób ustawić kursor myszy za pomocą C#?
Chcę symulować ruch myszy co x sekund. W tym celu użyję timera (x sekund) i gdy tykasz zegar, wykonam ruch myszy.Jak przesunąć kursor myszy za pomocą C#?
Ale w jaki sposób ustawić kursor myszy za pomocą C#?
Spójrz na Cursor.Position
Property. To powinno zacząć.
private void MoveCursor()
{
// Set the Current cursor, move the cursor's Position,
// and set its clipping rectangle to the form.
this.Cursor = new Cursor(Cursor.Current.Handle);
Cursor.Position = new Point(Cursor.Position.X - 50, Cursor.Position.Y - 50);
Cursor.Clip = new Rectangle(this.Location, this.Size);
}
Dzięki @JamesHill, nie pamiętam, jak to zrobić, a twój przykład jest doskonały. W moim przypadku dodałem kilka obliczeń do x i y, aby powiązać czas ruchu myszy (piksel na sekundę). – Pimenta
Czy to podejście WinForm? – greenoldman
Czuję, że powinienem o tym wspomnieć, aby ktoś nie wpadł w zabawny problem, który właśnie miałem. 'Cursor.Clip' ograniczy ruch twojej myszki do rozmiaru określonego przez' Location' i 'Size'. Tak więc powyższy fragment umożliwi ruch myszy tylko w ramce ograniczającej aplikacji. – Brandon
najpierw dodać Class (Win32.cs)
public class Win32
{
[DllImport("User32.Dll")]
public static extern long SetCursorPos(int x, int y);
[DllImport("User32.Dll")]
public static extern bool ClientToScreen(IntPtr hWnd, ref POINT point);
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int x;
public int y;
}
}
następnie połączyć go z imprezy:
Win32.POINT p = new Win32.POINT();
p.x = Convert.ToInt16(txtMouseX.Text);
p.y = Convert.ToInt16(txtMouseY.Text);
Win32.ClientToScreen(this.Handle, ref p);
Win32.SetCursorPos(p.x, p.y);
Również w WinForm możesz użyć Cursor.Position = new Point (x, y); – user3290286
gdzie jest POINT Type from? – RollRoll
@ThePoet Jest to struktura używana przez natywny kod. –
To brzmi jak pół rozwiązanie problemu nie mówisz nam o , to prawdopodobnie ma bardziej eleganckie rozwiązania. –
To całkiem możliwe! Nie rozumiemy dlaczego, ale wygaszacz ekranu aktywuje się po 10 minutach. Ale umieściliśmy 999 minut: P –
Następnie należy szukać rozwiązań, które zapobiegają uruchomieniu wygaszacza ekranu podczas uruchamiania aplikacji, zamiast manipulowania myszą lub ustawieniami wygaszacza ekranu. Na przykład. P/Invoke [SetThreadExecutionState] (http://stackoverflow.com/questions/3665332/how-do-i-prevent-screen-savers-and-sleeps-during-my-program-execution/3665545#3665545). Podejrzewałem, że jest to związany z wygaszaczem ekranu - zaprogramowane ruchy myszki nie resetują timera ekranu. –