如何得到windows任务栏某程序的右键菜单句柄?
本帖最后由 happytc 于 2011-2-26 08:03 编辑原来写了个程序,就是改变任务栏上某程序的右键出来的菜单,给每一个在任务栏的程序右键出来的菜单增加一项“总在最前面”,如下图所示。
但现在源码我找不到了,想不起是怎么改的了。不得不在这里问一下。
怎么做到这样?实在想不起当时是怎么做的了。
不会全是一样的类名:#32768吧
或者换个问的方式吧:用au3写的程序,怎么写这个右键菜单(如添加几个选项)?现在就是想把如图所示的那个功能重新搞出来
通过PID应该可以的 回复 2# gzh888666
怎么得到?现在没有头绪呀 本帖最后由 jxpxfeiw 于 2011-2-26 09:49 编辑
http://www.autoitx.com/forum.php?mod=viewthread&tid=9439&highlight=Guimenu
是这样的效果 ?
激活窗口,用WinGetHandle获取窗口句柄,再用_GUICtrlMenu_GetMenu获取菜单句柄不就能添加了吗? 回复 4# jxpxfeiw
这不就是标题所问的嘛,如何得到这个句柄?用WinGetHandle()肯定不行嘛 GetSystemMenu
AppendMenu 获取并不难,难的是如何让目标程序响应你的菜单,以下这个是以记事本为例(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. 回复 7# ceoguang
原来的我的那个程序是用C写的,就是想不起调用的是那个函数,看到au3调的_GUICtrlMenu_GetSystemMenu函数,马上就想起了C里是调用的HMENU GetSystemMenu(HWND hWnd,BOOL bRevert); 了。
哎,经常写些小程序,写完就扔了某个角落,时间长了就找不到了。现在这个小程序只剩下exe的了。
现在想用au3写个差不多功能的,居然找不到如何写了。
页:
[1]