首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

能否通过windows消息,在子窗体上的某特定坐标上执行单击操作?解决方案

2012-02-21 
能否通过windows消息,在子窗体上的某特定坐标上执行单击操作?如题:目的是,当鼠标单击父窗体某按钮时,执行

能否通过windows消息,在子窗体上的某特定坐标上执行单击操作?
如题:
目的是,当鼠标单击父窗体某按钮时,执行单击子窗体工具条中一“打开”按钮的操作,或执行菜单中“文件”的下拉菜单中“打开”操作。
由于菜单项和工具条按钮都没有句柄,所以:
1:我想通过用坐标定位“工具条中“打开”按钮的坐标”,然后单击的方式,执行此操作。
2:先获得菜单上“文件”的句柄,让子窗体获得焦点,然后用windows消息,执行单击操作,然后再发送键盘消息。
以上第一种想法根本我就不会。第二种我能获取“文件”的句柄,但是不能对“文件”执行单击操作。
还听 网友说,要先获取 菜单项的ID ,然后发WW_COMMAND消息,这个俺也不会...
希望有各位能帮我一把 谢谢了


[解决办法]
把“子窗体工具条中一“打开”按钮的操作”写成公共函数,单击父窗体按钮时调用该函数即可。
菜单也可以这样操作
[解决办法]

探讨
呵呵 谢谢
我还是没说清楚,子窗体是 别人应经编好了的 应用程序,他的程序我没有,界面更不能动。

[解决办法]
看看这个范例程序,里面有类似的操作过程
VB源码:外壳程序范例
http://download.csdn.net/source/2117506
[解决办法]
楼主描述问题不够清晰。

下面的例子是单击 Windows画图工具(msPaint.exe) 文件->另存为 按钮的示例代码。

VB code
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 IfEnd Sub 

热点排行