2016-07-29 5 views
0

응용 프로그램에 영향을주지 않습니다 B. 머신 B는 들어오는 위치 X와 Y를 취하여 here이라는 예제를 사용하여 마우스 움직임을 시뮬레이션합니다. 모든 것이 잘 동작하고 멋지게 나옵니다. 그러나 마우스가 움직이는 것을 볼 수는 있지만 컴퓨터 B의 전경에있는 Window에는 아무런 영향을 미치지 않습니다.C# 시뮬레이션 마우스 움직임 전경 내가이 기계를

"Window"란 무엇입니까? Unity3D 응용 프로그램입니다. 마우스 움직임으로 게임 내 카메라가 움직일 것으로 예상됩니다. 흥미롭게도, 내가 설명한대로 기계 A에서 마우스를 움직이는 것을 멈춘 다음 기계 B의 터치 패드 (또는 일반 마우스)를 통해 마우스를 움직이면 예상대로 게임 내 카메라가 움직입니다!

무슨 일입니까?

+0

나는 당신이 원하는 것을 얻기 위해 기계 "B"에서 CBT 후크를 사용할 필요가 있다고 생각한다. [여기] (http://stackoverflow.com/questions/4267881/cbt-hooks-in-windows-what-does-cbt-stand-for)를 참조하십시오. – GreatAndPowerfulOz

답변

0

어떤 이유 코드가 제대로 ... 작동하지 않습니다 here

[DllImport("user32.dll")] 
static extern bool SetCursorPos(int X, int Y); 

에서 가져온 것 같다! 내 마우스는 원격 시스템에서 예상대로 이동하지만 포 그라운드로 가져 오는 응용 프로그램은 마우스 움직임을 감지하지 못했습니다.

그러나, 나는이 mouse_event를 사용하여 작업을 얻을 관리 않았다

[Flags] 
public enum MouseEventFlags 
{ 
    LeftDown = 0x00000002, 
    LeftUp = 0x00000004, 
    MiddleDown = 0x00000020, 
    MiddleUp = 0x00000040, 
    Move = 0x00000001, 
    Absolute = 0x00008000, 
    RightDown = 0x00000008, 
    RightUp = 0x00000010 
} 

[DllImport("user32.dll")] 
private static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo); 

public static void MouseEvent(MouseEventFlags value, Point position) 
{ 
    MousePoint position = position; 

    mouse_event 
     ((int)value, 
     position.X, 
     position.Y, 
     0, 
     0) 
     ; 
} 

[StructLayout(LayoutKind.Sequential)] 
public struct MousePoint 
{ 
    public int X; 
    public int Y; 

    public MousePoint(int x, int y) 
    { 
     X = x; 
     Y = y; 
    } 

} 

은 전화를 사용하려면 :

mouse_event(MouseEventFlags.Move,new MousePoint{X = YOUR_X, Y = YOUR_Y}); 

모든 신용이 SO answer로 이동합니다.