我有ListView与图像在我的UserControl。当我带来的图片,我有是重画图片时,从图像中删除鼠标图片滋养旧。但当我带来了第二次对同一张图片不想重画,但当我带走了ListView的教堂,再次navoju工程。我想我可以做一个模仿鼠标。或者告诉我一些更好的。
[DllImport("user32.dll")] static extern bool SetCursorPos(int X, int Y);
但我看到了一丝老鼠的影子。
ecfsfe2w1#
为了模拟鼠标移动、按钮点击等,您可以尝试mouse_event API函数。注意,它只适用于 mickeys 而不是 pixels:http://msdn.microsoft.com/en-us/library/windows/desktop/ms646260(v=vs.85).aspx
mouse_event
[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 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);
1条答案
按热度按时间ecfsfe2w1#
为了模拟鼠标移动、按钮点击等,您可以尝试
mouse_event
API函数。注意,它只适用于 mickeys 而不是 pixels:http://msdn.microsoft.com/en-us/library/windows/desktop/ms646260(v=vs.85).aspx