2016-07-20 5 views
0

FPC와 내 응용 프로그램을 사용하는 게임이 있습니다. 게임은 화면의 중앙에 커서를 놓고 마우스가 움직일 때 게임에서 카메라를 움직입니다. 커서를 화면의 지정된 지점으로 이동해야합니다 (게임에서). 나는 SetCursorPos, SendInput, mouseeventCursor.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을 함수가 여전히 마우스를 움직 이도록 커서가 여전히 잠겨 있기 때문이라고 생각합니다. 나는 이것을 할 수있는 방법이 없다.

[편집] 문제는 게임에서 원시 입력을 사용한다는 것입니다. 원시 입력 옵션이 켜져 있어도 예상대로 작동하는 마우스 입력을 보내는 방법은 무엇입니까?

+0

이러한 기능이 작동하지 않으면 게임에서 원시 입력 또는 다른 메커니즘을 사용하여 마우스에서 데이터를 읽을 가능성이 높습니다. 왜 이럴 필요가 있니? 게임을 자동화하는 코드를 작성하려고합니까? –

+0

예, 있습니다. 이 프로그램은 다른 프로그램에서도 작동해야하지만 게임에서 작동하도록 만드는 것이 중요합니다. 원시 입력을 사용하는 경우 - 그런 다음 어떻게해야합니까? – g2556

+0

네가 옳았다. 게임에서 "Raw Input"옵션을 해제해야했습니다. 프로그램이 지금은 작동하지만 게임은 이제 조금 다릅니다 ... 그래서 Raw Input이 켜져있는 동안 프로그램을 작동시키고 싶습니다. – g2556

답변

0

원시 입력을 시뮬레이트하려면 WinIO과 같은 커널 모드 라이브러리를 사용해야합니다. (임의로, 사용자 프로그램이 사용자 모드에서 작동 할 수 있음)

관련 문제