用VB来模拟一次菜单操作(其他应用程序)

思路:
1.用FindWindow查目标应用程序的句柄
2.用GetMenu,GetSubMenu查菜单句柄
3.用GetMenuItemID查菜单ID
4.用SendMessage 加WM_COMMAND消息,模拟一次菜单操作


例子:模拟单击记事本程序  "文件"->"另存为"菜单

Private  Declare  Function  GetMenu Lib  " user32.dll "  (ByVal hWnd  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  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  hWnd  As   Long , hMenu  As   Long , MenuID  As   Long
hWnd 
=  FindWindow(vbNullString,  " 新建 文本文档 - 记事本 " ' 记事本的句柄,默认新建
hMenu  =  GetMenu(hWnd)
hMenu 
=  GetSubMenu(hMenu,  0 )                    ' "文件"菜单的句柄
MenuID  =  GetMenuItemID(hMenu,  3 )              ' 子菜单"另存为"的ID
SendMessage hWnd, WM_COMMAND, MenuID, ByVal  0
End Sub
 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值