【问题标题】:Obtain a windows id from within/outside a NSIS Script从 NSIS 脚本内部/外部获取 windows id
【发布时间】:2012-05-22 03:21:32
【问题描述】:

如何获取窗口“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 

【问题讨论】:

  • 请更具体地说明“窗口 ID”的含义。你是说窗户把手吗?对话框控件 ID?
  • @RaymondChen 请看上面的编辑
  • 我认为 z 顺序不是问题。另见:sourceforge.net/tracker/…

标签: winapi installation nsis


【解决方案1】:

可以使用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 顺序)取决于您在其中创建控件的顺序...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2019-03-02
    • 2015-01-19
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    相关资源
    最近更新 更多