使用mouse_event可以模拟一些通过鼠标执行的事情,下面我们就来模拟一次鼠标在EDIT中选择一段文本的过程。
首先我们来分解一下选中文本的鼠标动作,其包括基本方面:
- 将鼠标移动到指定的位置,文本的开始处
- 按下鼠标(WM_LBUTTONDOWN)
- 在按下鼠标的同时移动鼠标到指定的位置
- 松开鼠标左键(WM_LBUTTONUP)
知道了这个过程我们就来通过程序来模拟吧。我自己实验的时候建立了DIALOG工程,在DIALOG上放了一个BUTTON,一个EDIT,将程序写到BUTTON事件中,程序如下:
void CTestChkDlg: nBnClickedButton1()
{
RECT rect;
GetDlgItem(IDC_EDIT)->GetWindowRect(&rect);
SetCursorPos(rect.left+5,rect.top+5);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN,rect.left+1,rect.top+1,0,0);
SetCursorPos(rect.left+60,rect.top+10);
//mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE,500,600,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP,rect.left+60,rect.top+5,0,0);
}
首先我们需要做的是取得EDIT的位置,然后将鼠标移动到那里(SetCursorPos),这里加5是让鼠标在EDIT里面,因为EDIT有边,如果按照RECT的值来可能选择不了;然后使用MOUSEEVENTF_LEFTDOWN来按下鼠标,在按下鼠标的时候再将鼠标移动到文本的指定位置,然后松开鼠标。
好了文本选中了。
既然可以通过程序来模拟真正的鼠标动作,那么我们就可以写一些自动安装程序就不是什么难事情了。记得以前我们公司采用LOTUS软件来拷勤,需要在上面刷卡,哈哈,既然鼠标能模拟,这种方法可以写个程序来帮你刷卡,你永远不会迟到。当然,如果你真的这么做,后果自负。