Simulate mouse move

前端 未结 1 1331
礼貌的吻别
礼貌的吻别 2021-02-06 18:00

I have ListView with Images in my UserControl. When I am bringing the picture I have is redraw the picture when removing the mouse from the image picture nourish old. But when I

1条回答
  •  伪装坚强ぢ
    2021-02-06 18:45

    In order to simulate mouse moves, its buttons' clicks etc. you may try mouse_event API function. Be careful, it works with mickeys not pixels:

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms646260(v=vs.85).aspx

        [DllImport("User32.dll",
                   EntryPoint = "mouse_event",
                   CallingConvention = CallingConvention.Winapi)]
        internal static extern void Mouse_Event(int dwFlags,
                                                int dx,
                                                int dy,
                                                int dwData,
                                                int dwExtraInfo);
    
        [DllImport("User32.dll",
                   EntryPoint = "GetSystemMetrics",
                   CallingConvention = CallingConvention.Winapi)]
        internal static extern int InternalGetSystemMetrics(int value);
    
       ...
    
       // Move mouse cursor to an absolute position to_x, to_y and make left button click:
       int to_x = 500;
       int to_y = 300;
    
       int screenWidth = InternalGetSystemMetrics(0);
       int screenHeight = InternalGetSystemMetrics(1);
    
       // Mickey X coordinate
       int mic_x = (int) System.Math.Round(to_x * 65536.0 / screenWidth);
       // Mickey Y coordinate
       int mic_y = (int) System.Math.Round(to_y * 65536.0 / screenHeight);
    
       // 0x0001 | 0x8000: Move + Absolute position
       Mouse_Event(0x0001 | 0x8000, mic_x, mic_y, 0, 0);
       // 0x0002: Left button down
       Mouse_Event(0x0002, mic_x, mic_y, 0, 0);
       // 0x0004: Left button up
       Mouse_Event(0x0004, mic_x, mic_y, 0, 0);
    

    0 讨论(0)
提交回复
热议问题