用VB操作一个另外一个程序的页面,并且控制程序向该页面一个文本框输入字符,这里的文本框是用坐标的形式定位的,现在我要输入的是:“E:\2\3.JPG”下面是用VB写的部分原代码:
tmp = SetCursorPos(307, 552)’设定操作的文本框的坐标
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0'实现鼠标左键单击事件
keybd_event 70, 0, 0, 0
keybd_event 70, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入F
keybd_event 16, 0, 0, 0 '模拟键盘输入shift
keybd_event 186, 0, 0, 0 '模拟键盘按下“:”键
keybd_event 186, 0, KEYEVENTF_KEYUP, 0 '模拟键盘弹起“:”键
keybd_event 16, 0, KEYEVENTF_KEYUP, 0 '模拟键盘弹起shift keybd_event 220, 0, 0, 0
keybd_event 220, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入“\”
keybd_event 98, 0, 0, 0
keybd_event 98, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入“2”
keybd_event 220, 0, 0, 0
keybd_event 220, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入“\”
keybd_event 99, 0, 0, 0
keybd_event 99, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入“3”
keybd_event 110, 0, 0, 0
keybd_event 110, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入“.”
keybd_event 74, 0, 0, 0
keybd_event 74, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入“J”
keybd_event 80, 0, 0, 0
keybd_event 80, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入“P”
keybd_event 71, 0, 0, 0
keybd_event 71, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入“G”
上述程序代码执行以后输出的结果是:“F:|2|3.JPG”好像模拟shift按键弹起的那句话没有起作用,从按下以后就再也没有弹起来,这是为什么,求高手指点。
tmp = SetCursorPos(307, 552)’设定操作的文本框的坐标
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0'实现鼠标左键单击事件
keybd_event 70, 0, 0, 0
keybd_event 70, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入F
keybd_event 16, 0, 0, 0 '模拟键盘输入shift
keybd_event 186, 0, 0, 0 '模拟键盘按下“:”键
keybd_event 186, 0, KEYEVENTF_KEYUP, 0 '模拟键盘弹起“:”键
keybd_event 16, 0, KEYEVENTF_KEYUP, 0 '模拟键盘弹起shift keybd_event 220, 0, 0, 0
keybd_event 220, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入“\”
keybd_event 98, 0, 0, 0
keybd_event 98, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入“2”
keybd_event 220, 0, 0, 0
keybd_event 220, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入“\”
keybd_event 99, 0, 0, 0
keybd_event 99, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入“3”
keybd_event 110, 0, 0, 0
keybd_event 110, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入“.”
keybd_event 74, 0, 0, 0
keybd_event 74, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入“J”
keybd_event 80, 0, 0, 0
keybd_event 80, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入“P”
keybd_event 71, 0, 0, 0
keybd_event 71, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入“G”
上述程序代码执行以后输出的结果是:“F:|2|3.JPG”好像模拟shift按键弹起的那句话没有起作用,从按下以后就再也没有弹起来,这是为什么,求高手指点。
Const VK_TAB = &H9keybd_event VK_TAB, 0, 0, 0
keybd_event VK_TAB, 0, KEYEVENTF_KEYUP, 0
keybd_event 16, 42, KEYEVENTF_KEYUP, 0 '模拟键盘弹起shift
其中42由MapVirtualKey(16, 0)得到
Private Sub Command1_Click()
Dim winHwnd As Long
Dim kk
Dim RetVal As LongwinHwnd = FindWindow(vbNullString, "全国计算机应用技术证书考试(NIT) -- 网页对话框")
winHwnd = GetWindow(winHwnd, GW_child)
Debug.Print winHwndIf winHwnd <> 0 ThenRetVal = BringWindowToTop(winHwnd)
tmp = SetCursorPos(307, 552)
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
keybd_event 70, 0, 0, 0
keybd_event 70, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入F
keybd_event 16, 42, 0, 0 '模拟键盘输入shift
keybd_event 186, 0, 0, 0 '模拟键盘按下:186键
keybd_event 186, 0, KEYEVENTF_KEYUP, 0 '模拟键盘弹起:键 keybd_event 16, 42, KEYEVENTF_KEYUP, 0 '模拟键盘弹起shift keybd_event 220, 0, 0, 0
keybd_event 220, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入\
keybd_event 98, 0, 0, 0
keybd_event 98, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入2
keybd_event 220, 0, 0, 0
keybd_event 220, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入\
keybd_event 99, 0, 0, 0
keybd_event 99, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入3
keybd_event 110, 0, 0, 0
keybd_event 110, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入.
keybd_event 74, 0, 0, 0
keybd_event 74, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入J
keybd_event 80, 0, 0, 0
keybd_event 80, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入P
keybd_event 71, 0, 0, 0
keybd_event 71, 0, KEYEVENTF_KEYUP, 0 '模拟键盘输入G
If RetVal = 0 ThenMsgBox "置入消息错误!"End IfElseMsgBox "查找控件没有打开!"End IfEnd Sub
用 TextBox 或 WebBrowser 的简单网页测试都能输入:
f:\2\3.jpg
http://download.csdn.net/source/1273325