利用API函数模拟鼠标点击.有几个菜鸟级问题.

来源:百度知道 编辑:UC知道 时间:2024/06/27 23:27:07
1.
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
这是单击左键的代码,后面的坐标有啥用啊?我改动了一下,好象没什么用...

☆2.
mouse_event MOUSEEVENTF_MOVE, 0 , 0 , 0 , 0
这是移动鼠标的代码,后面那个坐标是相对于当前鼠标的位置的,好象VB应该是把屏幕 65535*65535 等分吧..为什么有4个坐标,而且只能相对于鼠标的当前位置移动,这是不是叫做"相对鼠标坐标"呢?那么"绝对鼠标坐标"应该怎么弄呢?而且怎么准确的找到自己想要的坐标呢?

★3.
我是把动作都加到Timer控件里,然后利用开始按扭来控制Timer控件的,要想完成一连串的动作则需要好几个Timer.这也不是很大的问题..可是,还有个问题..举个例子来说明..
比如,我想要鼠标先移动到A点,然后双击左键.然后再移动到B点.
这就需要3个Timer控件.可是,设置完Timer控件的Interval属性之后,假设时间间隔设置的都没有问题..可是,每个Timer里的动作都会重复的运行,间隔时间少的动作就会出现N遍, 这样根本就达不到效果...请问怎么让所有的Timer里的动作都运行完毕之后再循环运行呢?

菜鸟一个,别说太深...请说具体解决办法..200分送上,再追50!
3楼的,你那个是什么?我怎么看不明白啊?能说的详细点吗~

1。mouse_event有五个参数,第一个为选项标志,为 MOUSEEVENTF_LEFTDOWN时表示左键按下,为MOUSEEVENTF_LEFTUP表示左键松开,向系统发送相应消息。第二三个参数分别表示x,y相对位置,一般可设为0,0,第四五个参数并不重要,一般也可设为0,0。

2。mouse_event MOUSEEVENTF_MOVE, 0 , 0 , 0 , 0前面两个别0,0是代表的坐标x , y,如果都设置为零的话,则每次模拟事件的位置是鼠标的当前位置,x , y 在没有使用MOUSEEVENTF_ABSOLUTE标志时是相对于鼠标当前位置的坐标.如果使用绝对坐标,那么x,y应该是相对于屏幕的坐标.

3。timer当有多个时候,你在移动时候应该使用timer的Enabled属性将使用过的变为不可用吧,避免一直使用中,然后在变为可用。

先引用API函数
[DllImport("user32.dll")]
static extern short GetKeyState(int nVirtKey);
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk,byte bScan,uint dwFlags,uint dwExtraInfo);
定义几个只读变量表示鼠标的动作
private readonly int MOUSEEVENTF_LEFTDOWN = 0x2;
private readonly int MOUSEEVENTF_RIGHTDOWN = 0x8;
private readonly int MOUSEEVENTF_LEFTUP = 0x4;
private readonly int MOUSEEVENTF_RIGHTUP = 0x10;
要完成鼠标模拟动作,要引用这个WIN函数
[DllImport("user32.dll")]
public static extern UInt32 RegisterHo