매 x 초마다 마우스 움직임을 시뮬레이트하고 싶습니다. 이를 위해 타이머 (x 초)를 사용하고 타이머가 틱하면 마우스 동작을 수행합니다.C#을 사용하여 마우스 커서를 움직이는 방법은 무엇입니까?
그러나 C#을 사용하여 어떻게 마우스 커서를 움직일 수 있습니까?
매 x 초마다 마우스 움직임을 시뮬레이트하고 싶습니다. 이를 위해 타이머 (x 초)를 사용하고 타이머가 틱하면 마우스 동작을 수행합니다.C#을 사용하여 마우스 커서를 움직이는 방법은 무엇입니까?
그러나 C#을 사용하여 어떻게 마우스 커서를 움직일 수 있습니까?
을 살펴보십시오. 그것은 당신을 시작해야합니다.
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);
}
Thanks @JamesHill, 나는 이것을하는 법을 기억하지 못했고 당신의 예가 훌륭합니다. 나는 나의 움직임 x와 y에 마우스 움직임 시간 (초당 픽셀)을 만들기 위해 몇 가지 계산을 추가했다 – Pimenta
이 WinForms 접근법인가? – greenoldman
나는 누군가가 내가 방금 들었던 웃기는 문제에 빠지지 않도록 이것을 언급해야한다고 생각한다. 'Cursor.Clip'은 마우스의 움직임을'Location'과'Size'에 의해 지정된 크기로 제한 할 것입니다. 위의 스 니펫은 마우스가 애플리케이션의 경계 상자 내에서만 움직이는 것을 허용합니다. – Brandon
먼저 추가 클래스 (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;
}
}
그런 다음 이벤트에서 호출 :
는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);
또한 WinForm에서 Cursor.Position = new Point (x, y)를 사용할 수있다; – user3290286
POINT 유형은 어디에서입니까? – RollRoll
@ThePoet 네이티브 코드에서 사용하는 구조체입니다. –
이 당신에 대해 우리에게 이야기하지 않는 문제에 대한 반 솔루션 같은 소리 , 아마 더 우아한 솔루션을 가지고 있습니다. –
꽤 가능합니다! 우리는 왜 화면 보호기가 10 분이 지나면 활성화되는지 이해하지 못합니다. 그러나 우리는 999 분을 넣습니다. P –
그러면 마우스 나 화면 보호기 설정을 사용하지 않고 응용 프로그램이 실행 중일 때 화면 보호기가 활성화되지 못하도록하는 솔루션을 찾아야합니다. 예 : P/Invoke [SetThreadExecutionState] (http://stackoverflow.com/questions/3665332/how-do-i-prevent-screen-savers-and-sleeps-during-my-program-execution/3665545#3665545). 나는 이것이 스크린 세이버와 관련이 있다고 의심했다. 프로그래밍 된 마우스 움직임은 스크린 세이버 타이머를 재설정하지 않는다. –