我弄了两天,已经把代码写出来了.先找到指定窗口(我公司专用的生产数据统计软件)的句柄,然后找到按钮的句柄,之后向发送单击,但那个按钮事件没有响应.后来我把代码用来操作IE的属性对话窗口(Internet 属性/选项),IE的属性窗口的按钮能够响应代码传送过来的鼠标单击,也就是说代码是正确的.
是不是我公司的统计软件中的按钮比较特别,请问还有什么办法能够向按钮传送鼠标单击?(我已经获得了这个按钮的句柄,为什么传送不了鼠标单击事件?而IE的又可以?)
是不是我公司的统计软件中的按钮比较特别,请问还有什么办法能够向按钮传送鼠标单击?(我已经获得了这个按钮的句柄,为什么传送不了鼠标单击事件?而IE的又可以?)
解决方案 »
- 接分2!
- 使用WithEvents怎么不能定义数组变量,如果我要用到数组,怎么解决
- 问一下高手,能不能在1个按钮里实现连接服务器,发数据,接数据,在发数据,在接数据!
- 在线等待,急!!!100分求救--关于SStab的变色
- 关于取窗口句柄实现文件复制、移动功能的问题(十万火急!!!!!)
- 我的vb中data控件为什么不能识别.mdb格式了!急死我了!
- 如何用最简单的办法将基于access数据库的程序转到sql上来?问题已经解决!高兴!感谢 sunxl(じ小呆☆`~o) !!散分!
- 帮忙分析一下<世界上最小的密码查看器(vb编的)(已经脱壳)>原理
- 请教:有关VB,ACCESS,EXCEL应用的一个工控程序
- 取随机数
- 如下功能要如何实现——请赐教
- 我想使文本框中的文本在托盘图标上从右到左移动的托盘程序,但是以下代码好像有点问题,请帮帮忙把!!!
開啟Notes自動輸入密碼Declare Function GetClassNameA Lib "user32" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Declare Function FindWindowA& Lib "user32" (ByVal lpClassName$, ByVal lpWindowName$)
Declare Function SetActiveWindow Lib "user32" (ByVal hwnd As Long) As Long
Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Declare Function GetWindowTextA Lib "user32" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function SendString Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As String
Declare Function SendCommand Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As StringConst WM_SETTEXT = &HC
Const BM_CLICK = &HF5
Const GW_CHILD = 5
Const GW_HWNDNEXT = 2Function GetClassNameStr(hwnd As Long) As String
Dim TempStr As String
Dim Rc As Long
TempStr = Space(260)
Rc = GetClassNameA(hwnd, TempStr, Len(TempStr))
GetClassNameStr = StrConv(LeftB$(StrConv(TempStr, vbFromUnicode), Rc), vbUnicode)
End FunctionFunction GetWndText(hwnd As Long) As String
Dim K As Long
Dim sName As String
sName = Space$(128)
K = GetWindowTextA(hwnd, sName, Len(sName))
GetWndText = IIf(K > 0, Left$(sName, K), "未知")
End FunctionPrivate Sub Form_Load()
Me.Hide
Dim hwnd As Long
Dim CName As String
Call Shell("d:\Lotus\Notes\notes.exe", 1)
Do While True
hwnd = FindWindowA("#32770", "輸入密碼")
If hwnd <> 0 Then SetActiveWindow hwnd: Exit Do
Loop
DoEvents
hwnd = GetWindow(hwnd, GW_CHILD)
If hwnd = 0 Then Exit Sub
Do While hwnd > 0
Select Case GetClassNameStr(hwnd)
Case "IRIS.password"
SendString hwnd, WM_SETTEXT, 0&, "1234"
Case "Button"
'無焦點需發兩次
If InStr(GetWndText(hwnd), "確定") Then SendCommand hwnd, BM_CLICK, 0, 0
End Select
hwnd = GetWindow(hwnd, GW_HWNDNEXT)
Loop
End
End Sub
Private Sub Command1_Click()中
SendMessage hwnd, BM_CLICK, 0, 0
或ret = PostMessage(hwnd, BM_CLICK, 0, 0)
都要运行两次,也就是说这句代码写两次,
如果只写一次,那我要在我写的窗口里点击command1两次就能成功传送单击,谢谢!