2012-05-22 35 views
0

如何获取窗口“id” - 与Win32窗口关联的唯一编号?从NSIS脚本内部/外部获取Windows ID

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

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

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

编辑 对不起,我不熟悉,正确的说法是什么,我说什么。我不是在谈论HWND变量/句柄我正在谈论那个窗口唯一的窗口标识这是一个整数。

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

请更具体地说明您的意思是“窗口ID”。你的意思是窗户把手吗?对话框控件ID? –

+0

@RaymondChen请参阅上面的编辑 –

+0

我不认为z顺序是问题。另见:http://sourceforge.net/tracker/index.php?func=detail&aid=1420352&group_id=22049&atid=373085 – Anders

回答

2

一个对话框子控件的ID可以像Winspy++间谍工具上找到(该工具显示在十六进制所以用的calc.exe转换或前缀数以0x在.nsi)

NSIS有两个嵌套对话框,外部对话框承载下一个,后退和取消按钮。内部对话框托管当前页面的控件。

为了让手柄的按钮外对话框:

GetDlgItem $1 $hwndparent 1 

而对于内部对话:

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

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