0

如何获取窗口“id” - 与 Win32 窗口关联的唯一编号?

我可以在 NSIS 脚本(.nsi 文件)中获取 id 吗?如果不是,我可以使用什么外部程序?出于某种原因,当我运行我的安装程序时,ResHacker 没有向我显示正确的对话框。我听说过 GDISpy 或类似名称的东西。

我要做的是更改 MUI2 页面中某些窗口的 z 索引,并将复选框背景设置为自定义页面中的透明。

找出 Windows 唯一 ID 的最简单方法是什么?

编辑 对不起,我不熟悉我所说的正确术语。我不是在谈论 HWND 变量/句柄我在谈论那个 windows 唯一的窗口 id 那是一个整数。

# In NSIS 
GetDlgItem $R0 ${parentHWND} 1012 # the 1012 is what I am referring to as the window ID 
4

1 回答 1

2

可以使用Winspy++之类的间谍工具找到对话框子控件的 ID (此工具以十六进制显示,因此请使用 calc.exe 进行转换,或在 .nsi 中为数字添加前缀 0x)

NSIS 有两个嵌套对话框,外层对话框承载下一个、返回和取消按钮。内部对话框承载当前页面的控件。

要获取外部对话框中按钮的句柄:

GetDlgItem $1 $hwndparent 1

对于内部对话框:

FindWindow $0 "#32770" "" $HWNDPARENT ;Find inner dialog first
GetDlgItem $1 $0 0x666

对于自定义页面,id(和 z 顺序)取决于您在其中创建控件的顺序...

于 2012-05-22T06:48:09.560 回答