FPC와 내 응용 프로그램을 사용하는 게임이 있습니다. 게임은 화면의 중앙에 커서를 놓고 마우스가 움직일 때 게임에서 카메라를 움직입니다. 커서를 화면의 지정된 지점으로 이동해야합니다 (게임에서). 나는 SetCursorPos
, SendInput
, mouseevent
및 Cursor.Position
을 시도했지만 이들 중 아무도이 작업을 수행하지 않았습니다. 오직이 코드 (어디 선가 그것을 발견,하지만 난 그것을 다시 찾을 수 없습니다)) 마우스를 이동하지만, 게임) 상단에 있다면 잘못된 배치하기 위해서만 (다른 기능은 아무것도하지 않았다 :다른 응용 프로그램의 지정된 위치로 커서 이동
private const int MOUSEEVENTF_ABSOLUTE = 0x8000;
private const int MOUSEEVENTF_MOVE = 0x0001;
public static void MoveTo(float x, float y)
{
float min = 0;
float max = UInt16.MaxValue;
int mappedX = (int)Remap(x, 0.0f, Screen.PrimaryScreen.Bounds.Width, min, max);
int mappedY = (int)Remap(y, 0.0f, Screen.PrimaryScreen.Bounds.Height, min, max);
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, mappedX, mappedY, 0, 0);
}
public static float Remap(float value, float from1, float to1, float from2, float to2)
{
return (value - from1)/(to1 - from1) * (to2 - from2) + from2;
}
I을 함수가 여전히 마우스를 움직 이도록 커서가 여전히 잠겨 있기 때문이라고 생각합니다. 나는 이것을 할 수있는 방법이 없다.
[편집] 문제는 게임에서 원시 입력을 사용한다는 것입니다. 원시 입력 옵션이 켜져 있어도 예상대로 작동하는 마우스 입력을 보내는 방법은 무엇입니까?
이러한 기능이 작동하지 않으면 게임에서 원시 입력 또는 다른 메커니즘을 사용하여 마우스에서 데이터를 읽을 가능성이 높습니다. 왜 이럴 필요가 있니? 게임을 자동화하는 코드를 작성하려고합니까? –
예, 있습니다. 이 프로그램은 다른 프로그램에서도 작동해야하지만 게임에서 작동하도록 만드는 것이 중요합니다. 원시 입력을 사용하는 경우 - 그런 다음 어떻게해야합니까? – g2556
네가 옳았다. 게임에서 "Raw Input"옵션을 해제해야했습니다. 프로그램이 지금은 작동하지만 게임은 이제 조금 다릅니다 ... 그래서 Raw Input이 켜져있는 동안 프로그램을 작동시키고 싶습니다. – g2556