如何实现控制其它程序的菜单操作?

windyloft 2004-06-08 11:01:48
我想在一个程序中实现对另外一个程序的菜单的操作,改怎么办?
...全文
180 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodname008 2004-06-12
  • 打赏
  • 举报
回复
' 写了个小例子,不知道合不合你胃口。 :D
' 模拟鼠标单击注册表编辑器的“文件”->“导入”菜单项。

Option Explicit

Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetMenu Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function GetSubMenu Lib "user32.dll" (ByVal hMenu As Long, ByVal nPos As Long) As Long
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 Const WM_COMMAND = &H111

Private Sub Command1_Click()
Shell "regedit.exe"

Dim Handle As Long
Handle = FindWindow("RegEdit_RegEdit", "注册表编辑器")

Dim hMenu As Long, hSubMenu As Long
hMenu = GetMenu(Handle)
hSubMenu = GetSubMenu(hMenu, 0)

SendMessage Handle, WM_COMMAND, 658, hSubMenu

End Sub

windyloft 2004-06-09
  • 打赏
  • 举报
回复
to goodname008:
是的,我原来打算通过取得程序的菜单句柄,然后发送消息,可不管用
goodname008 2004-06-08
  • 打赏
  • 举报
回复
API中有很多操作菜单的函数。
先获得另外程序的菜单,然后对菜单操作。
MSDN中很全,查关于menu的函数。
windyloft 2004-06-08
  • 打赏
  • 举报
回复
我想通过发送消息给其它程序,来实现对其它程序的菜单操作
ryuginka 2004-06-08
  • 打赏
  • 举报
回复
顶一下,不大懂
goodname008 2004-06-08
  • 打赏
  • 举报
回复
能代码贴出来看看。

你是想实现单击菜单项的效果吗?
windyloft 2004-06-08
  • 打赏
  • 举报
回复 1
我的程序是用vc写的,来控制vb程序的菜单。

如果用vc控制vc程序的菜单,通过发消息可以实现。如下:
::SendMessage(h, WM_COMMAND, (WPARAM)hMenu, (LPARAM)hMenuFile);

但是当被控制的程序改为vb程序的时候SendMessage就不好用了,
这是为什么?

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧