请教各位高手,我想VB如何向其他软件的菜单和文本框发送消息;例如:我想操作IE的菜单栏的文件菜单里面的发送菜单。

解决方案 »

  1.   

    如果是菜单命令,对于IE比较容易,因为IE是可操作的,向其它程序的文本框发送消息较容易,网上的例子很多,发送其它程序菜单命令就困难一些,有些也能做到。基本原理就是找到文本框或菜单的句柄,用API函数SendMessage之类发送消息就行了。
      

  2.   

    这是一个向记事本菜单发送命令的例子:
    Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
      Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
      Private Declare Function GetMenuItemID Lib "user32.dll" (ByVal hMenu As Long, ByVal nPos As Long) As Long
      Private Declare Function GetSubMenu Lib "user32.dll" (ByVal hMenu As Long, ByVal nPos As Long) As Long
          
      Private Const WM_COMMAND             As Long = &H111
          
      Private Sub Command1_Click()
                    Dim h1  As Long, h2  As Long, id   As Long
                     h1 = FindWindow(vbNullString, "无标题 - 记事本")                     '计事本的句柄
                    Debug.Print h1
                    h2 = GetMenu(h1)
                    h2 = GetSubMenu(h2, 0)                                       '文件"菜单的句柄     改变后面的0,就可以
                                                                                                '得到不同菜单的句柄
                    id = GetMenuItemID(h2, 1)                                 '子菜單"打开"的ID
                    SendMessage h1, WM_COMMAND, id, ByVal 0&
                          
      End Sub
        
      
    Private Sub Form_Load()
    Shell "notepad.exe", vbNormalNoFocus
    End Sub
      

  3.   

    http://download.csdn.net/source/1273325
    我做了一个软键盘,楼主可以看看,里面有相关的代码:
      

  4.   

    上面的代码我在网上都看过,不过怎么能得到子菜单的句柄呢
    问题一:他的自菜单里面有粘贴项,我想直接发给那个菜单,不知可行。
    问题二:如果上述方法不行就直接PostMessage Ctrl+V发送,那么PostMessages能发送Ctrl+V,还有就是发送到那个程序的窗口
    问题三:我想直接像补丁一样,把我的程序界面加在那个软件的界面上是否能行。
      

  5.   

    Private Declare Function GetMenu Lib "user32" Alias "GetMenu" (ByVal hwnd As Long) As Long
    加上这句调试