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

解决方案 »

  1.   

    没让你改界面,把函数的private改成public就行了。
      

  2.   

    看看这个范例程序,里面有类似的操作过程
    VB源码:外壳程序范例
    http://download.csdn.net/source/2117506
      

  3.   

    楼主描述问题不够清晰。下面的例子是单击 Windows画图工具(msPaint.exe) 文件->另存为 按钮的示例代码。
    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