正如我在标题中所说,我需要将光标移动/摇动到所选控件(控制位置)上。
我就是这样做的,在我得到控制位置之前(按钮叫 btnMinimize 是我正在谈论的控件)我想把光标定位到。这就是我获得 X和Y 位置的方式:
relativePoint = this.btnMinimize.TransformToAncestor(this).Transform(new Point(0, 0));
LeftMouseClick(relativePoint.X, relativePoint.Y);
这是LeftMouseClick方法的定义:
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool SetCursorPos(int x, int y);
public static void LeftMouseClick(int xpos, int ypos)
{
SetCursorPos(xpos, ypos);
// mouse_event(MOUSEEVENTF_LEFTDOWN, xpos, ypos, 0,0);
// mouse_event(MOUSEEVENTF_LEFTUP, xpos, ypos, 0, 0);
}
现在,我将光标放在选定控件上后想要做的就是将鼠标向左或向右移动1个像素,就像有人亲切地触摸鼠标并移动它一样,因为就像我这样,我不能看到我的光标位于所选控件上方(即使他),直到我真正移动鼠标...
这里有两个图片:
我运行应用程序时的第一个:
我用黄色框标记了我的btnMinize,你可以看到应用程序运行但光标没有显示在那里......
当我触摸我的MOUSE PHYSYCALI时,这里是另一个图像
因为我触摸了连接到计算机的鼠标,所以你可以看到第二个图像鼠标游标显示它没有隐藏
所以我怎么能模拟真正的移动或者只是为了将光标显示在我的控制之上并向左或向右移动它或者其他什么,我只是想将它移动到btnMinimize以使其在那里可见。
谢谢你们, CHEERS
答案 0 :(得分:0)
这就是我解决这个问题的方法:
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
public void LeftMouseClick(int xpos, int ypos)
{
SetCursorPos(xpos, ypos);
mouse_event(MOUSEEVENTF_LEFTDOWN, xpos, ypos, 0,0);
mouse_event(MOUSEEVENTF_LEFTUP, xpos, ypos, 0, 0);
mouse_event(MOUSEEVENTF_MOVE, xpos+5, ypos+5, 0, 0);
timer.Interval = 1000; // here time in milliseconds
timer.Tick += timer_Tick;
timer.Start();
}
void timer_Tick(object sender, System.EventArgs e)
{
SetCursorPos(1500, 28);
timer.Stop();
}
正如你所看到的,我添加了几行代码:
mouse_event(MOUSEEVENTF_MOVE, xpos+5, ypos+5, 0, 0);
//我使用这一行在x和y上移动光标5像素,只是为了记录一些动作,然后我接下来做了什么,我使用定时器在1秒后将光标移动到屏幕上的某个位置,看起来这就是我要找的答案,因为在新位置定位了1秒光标并且 显示 后:SetCursorPos(1500, 28);
这就是我的意思正在寻找。