3

我的用户控件中有带有图像的 ListView。当我把我的图片从图像中删除时重新绘制图片时图片滋养旧。但是,当我第二次在同一张照片上带上时不想重绘,但是当我带走 ListView 的教堂并再次 navozhu 作品时。我以为我可以做一只仿老鼠。或者告诉我一些更好的东西。

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

它可以工作,但我看到了一丝鼠标。

4

1 回答 1

7

为了模拟鼠标移动、按钮的点击等,您可以尝试mouse_eventAPI 功能。小心,它适用于mickeys而不是像素

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);
于 2013-08-22T11:32:40.783 回答