从NSIS脚本内部/外部获取Windows ID

时间:2012-05-22 03:21:33

标签: winapi installer nsis

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

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

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

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

修改 对不起,我不熟悉正确的用语就是我在谈论的内容。我不是在谈论HWND变量/句柄我在谈论窗口唯一窗口id是一个整数。

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

1 个答案:

答案 0 :(得分: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顺序)取决于您在...中创建控件的顺序。