找回密码
 加入
搜索
查看: 6098|回复: 7

[系统综合] 如何得到windows任务栏某程序的右键菜单句柄?

  [复制链接]
发表于 2011-2-26 03:42:34 | 显示全部楼层 |阅读模式
本帖最后由 happytc 于 2011-2-26 08:03 编辑

原来写了个程序,就是改变任务栏上某程序的右键出来的菜单,给每一个在任务栏的程序右键出来的菜单增加一项“总在最前面”,如下图所示。
但现在源码我找不到了,想不起是怎么改的了。不得不在这里问一下。

怎么做到这样?实在想不起当时是怎么做的了。

不会全是一样的类名:#32768吧

或者换个问的方式吧:用au3写的程序,怎么写这个右键菜单(如添加几个选项)?现在就是想把如图所示的那个功能重新搞出来

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-2-26 03:50:03 | 显示全部楼层
通过PID应该可以的
 楼主| 发表于 2011-2-26 04:06:51 | 显示全部楼层
回复 2# gzh888666

怎么得到?现在没有头绪呀
发表于 2011-2-26 09:45:32 | 显示全部楼层
本帖最后由 jxpxfeiw 于 2011-2-26 09:49 编辑

http://www.autoitx.com/forum.php ... p;highlight=Guimenu
是这样的效果 ?

激活窗口,用WinGetHandle获取窗口句柄,再用_GUICtrlMenu_GetMenu获取菜单句柄不就能添加了吗?
 楼主| 发表于 2011-2-26 10:22:58 | 显示全部楼层
回复 4# jxpxfeiw

这不就是标题所问的嘛,如何得到这个句柄?用WinGetHandle()肯定不行嘛
发表于 2011-2-26 10:26:33 | 显示全部楼层
GetSystemMenu
AppendMenu
发表于 2011-2-26 11:33:49 | 显示全部楼层
获取并不难,难的是如何让目标程序响应你的菜单,以下这个是以记事本为例(win7下需要编译).但是并不会响应你的 "Always on top"菜单.

#NoTrayIcon
#include <winapi.au3>
#include <GUIMenu.au3>
$hWnd = _WinAPI_FindWindow("Notepad","无标题 - 记事本")
ConsoleWrite($hWnd & @LF)
If $hWnd Then
        $SysMenu = _GUICtrlMenu_GetSystemMenu($hWnd)
        _GUICtrlMenu_InsertMenuItem($SysMenu, 7, "Always on top")
EndIf

如果要响应,还得要挂勾目标窗口的WM_SYSCOMMAND.
 楼主| 发表于 2011-2-26 11:48:53 | 显示全部楼层
回复 7# ceoguang

原来的我的那个程序是用C写的,就是想不起调用的是那个函数,看到au3调的_GUICtrlMenu_GetSystemMenu函数,马上就想起了C里是调用的HMENU GetSystemMenu(HWND hWnd,BOOL bRevert); 了。

哎,经常写些小程序,写完就扔了某个角落,时间长了就找不到了。现在这个小程序只剩下exe的了。
现在想用au3写个差不多功能的,居然找不到如何写了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-21 13:33 , Processed in 0.074536 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表