如题:
目的是,当鼠标单击父窗体某按钮时,执行单击子窗体工具条中一“打开”按钮的操作,或执行菜单中“文件”的下拉菜单中“打开”操作。
由于菜单项和工具条按钮都没有句柄,所以:
1:我想通过用坐标定位“工具条中“打开”按钮的坐标”,然后单击的方式,执行此操作。
2:先获得菜单上“文件”的句柄,让子窗体获得焦点,然后用windows消息,执行单击操作,然后再发送键盘消息。
以上第一种想法根本我就不会。第二种我能获取“文件”的句柄,但是不能对“文件”执行单击操作。
还听 网友说,要先获取 菜单项的ID ,然后发WW_COMMAND消息,这个俺也不会...
希望有各位能帮我一把 谢谢了
目的是,当鼠标单击父窗体某按钮时,执行单击子窗体工具条中一“打开”按钮的操作,或执行菜单中“文件”的下拉菜单中“打开”操作。
由于菜单项和工具条按钮都没有句柄,所以:
1:我想通过用坐标定位“工具条中“打开”按钮的坐标”,然后单击的方式,执行此操作。
2:先获得菜单上“文件”的句柄,让子窗体获得焦点,然后用windows消息,执行单击操作,然后再发送键盘消息。
以上第一种想法根本我就不会。第二种我能获取“文件”的句柄,但是不能对“文件”执行单击操作。
还听 网友说,要先获取 菜单项的ID ,然后发WW_COMMAND消息,这个俺也不会...
希望有各位能帮我一把 谢谢了
VB源码:外壳程序范例
http://download.csdn.net/source/2117506
Sub MakeThis(gPathFileName As String)
Dim ret As Long
Dim pHwnd As Long, lpString As String, TextLength As Long
ret = ShellExecute(Me.hwnd, "open", "msPaint.exe", """" & gPathFileName & """", vbNullString, SW_NORMAL)
If ret <> 0 Then
Do
DoEvents
pHwnd = FindWindow("MSPaintApp", Mid(gPathFileName, InStrRev(gPathFileName, "\") + 1) & " - 画图")
'pHwnd = FindWindow("MSPaintApp", vbNullString)
Loop Until pHwnd <> 0
If pHwnd > 0 Then
TextLength = GetWindowTextLength(pHwnd)
lpString = Space(TextLength)
Call GetWindowText(pHwnd, lpString, TextLength + 1)
'Debug.Print lpString
Dim hMenu As Long, hSubMenu As Long, hMenuItem As Long
Dim mString As String, mStrLen As Long
hMenu = GetMenu(pHwnd)
If hMenu > 0 Then
hSubMenu = GetSubMenu(hMenu, 0)
hMenuItem = GetMenuItemID(hSubMenu, 3)
mStrLen = GetMenuString(hSubMenu, hMenuItem, mString, 0, MF_BYCOMMAND)
mString = Space(mStrLen)
GetMenuString hSubMenu, hMenuItem, mString, mStrLen + 1, MF_BYCOMMAND
'Debug.Print mString
PostMessage pHwnd, WM_COMMAND, hMenuItem, 0
End If
End If
End If
End Sub