求 SendMessage 对 ComboBox 控件操作时。 ComboBox 响应 Click事件的方法。
现在需要对一个第三方程序中的一个ComboBox控件进行选择操作。但是使用SendMessagehWnd,CB_SETCURSEL,Index,0&选择之后无法触发它的C...
现在需要对一个第三方程序中的一个 ComboBox 控件进行选择操作。 但是使用
SendMessage hWnd, CB_SETCURSEL, Index, 0& 选择之后无法触发它的 Click事件。 也就没办法使用它的相关功能。 不知道各位有没有谁有办法解决? 改变ComboBox值的同时去触发Click事件。
不行的。 ComboBox 是不可输入的。 用的不是Change事件。
-.- 没看见我要操作的是第三方的程序么。。。 展开
SendMessage hWnd, CB_SETCURSEL, Index, 0& 选择之后无法触发它的 Click事件。 也就没办法使用它的相关功能。 不知道各位有没有谁有办法解决? 改变ComboBox值的同时去触发Click事件。
不行的。 ComboBox 是不可输入的。 用的不是Change事件。
-.- 没看见我要操作的是第三方的程序么。。。 展开
展开全部
ComboBox 响应 Click事件的方法如下,同样适用于第三方的程序,且为后台操作:
SendMessage Hwd, CB_SHOWDROPDOWN, 1, 0 '展开ComboBox列表框
SendMessage Hwd, CB_SETCURSEL, Index, 0 '指向指定记录号
SendMessage Hwd, WM_SETFOCUS, 0&, 0& '选中按钮
Sleep 100
SendMessage Hwd, WM_KEYDOWN, vbKeyReturn, 0& '模拟按下指定键
Sleep 100
SendMessage Hwd, WM_KEYUP, vbKeyReturn, 0&
注:有关声明及变量取值略,请自行完善。
SendMessage Hwd, CB_SHOWDROPDOWN, 1, 0 '展开ComboBox列表框
SendMessage Hwd, CB_SETCURSEL, Index, 0 '指向指定记录号
SendMessage Hwd, WM_SETFOCUS, 0&, 0& '选中按钮
Sleep 100
SendMessage Hwd, WM_KEYDOWN, vbKeyReturn, 0& '模拟按下指定键
Sleep 100
SendMessage Hwd, WM_KEYUP, vbKeyReturn, 0&
注:有关声明及变量取值略,请自行完善。
展开全部
CB_SETCURSEL可以改变选择项,但不能触发事件
应发送CBN_SELCHANGE消息以触发Onchange事件(一般是在OnChange处理,不是指文字change,是当前选中项change,跟能不能输入没啥关系)
SendMessage(hwnd, WM_COMMAND, CBN_SELCHANGE * 65536 + Combo.hwnd, Combo.hwnd)
hwnd:combox所在窗体句柄
Combo.hwnd:combobox句柄
另:VB调用SendMessage会有各种奇怪问题,经常不成功,试试别的语言吧。
应发送CBN_SELCHANGE消息以触发Onchange事件(一般是在OnChange处理,不是指文字change,是当前选中项change,跟能不能输入没啥关系)
SendMessage(hwnd, WM_COMMAND, CBN_SELCHANGE * 65536 + Combo.hwnd, Combo.hwnd)
hwnd:combox所在窗体句柄
Combo.hwnd:combobox句柄
另:VB调用SendMessage会有各种奇怪问题,经常不成功,试试别的语言吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我发现按键也会触发click事件,一下代码对于vb的combobox是能触发click事件的,你试试你那个第三方控件吧:
Private Sub Command1_Click()
SendMessage Combo1.hwnd, CB_SETCURSEL, 2, 0
Combo1.SetFocus
SendKeys "{UP}"
SendKeys "{DOWN}", True
End Sub
Private Sub Command1_Click()
SendMessage Combo1.hwnd, CB_SETCURSEL, 2, 0
Combo1.SetFocus
SendKeys "{UP}"
SendKeys "{DOWN}", True
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
路过看看。
你不贴详细代码,我们也只能猜测是怎么回事儿。combobox控件是你的第三方程序的子窗口的一个控件。很难直接获取的这个控件的句柄。是不是获取的句柄不对?对的话应该可以向这个控件发送指令的。
我以前做过类似的,用自己做的程序自动操作飞信客户端,通过飞信发免费短信。原理是这样的,或许对你有帮助。先用findwindow函数获取第三方程序的主窗口,再用Spy++工具,侦测他的子窗口和控件的句柄。获取的控件句柄后,我的所有发送SendMessage 都是可行的。就是方法麻烦点。
HWND FindWindow ( LPCSTR lpClassName, LPCSTR lpWindowName );
你不贴详细代码,我们也只能猜测是怎么回事儿。combobox控件是你的第三方程序的子窗口的一个控件。很难直接获取的这个控件的句柄。是不是获取的句柄不对?对的话应该可以向这个控件发送指令的。
我以前做过类似的,用自己做的程序自动操作飞信客户端,通过飞信发免费短信。原理是这样的,或许对你有帮助。先用findwindow函数获取第三方程序的主窗口,再用Spy++工具,侦测他的子窗口和控件的句柄。获取的控件句柄后,我的所有发送SendMessage 都是可行的。就是方法麻烦点。
HWND FindWindow ( LPCSTR lpClassName, LPCSTR lpWindowName );
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询