NSIS提供的的对窗口及子控件操作的指令

来源:互联网 发布:win7 安装ubuntu 编辑:程序博客网 时间:2024/06/04 18:57

NSIS提供了很多对对话框窗口及其子控件(包括:按钮,复选框,静态标签,

以及树形控件等)操作的指令。利用这些指令,可以很方便的改变子控件
的状态。下面举例说明:
1.EnableWindow
窗口句柄(HWMD)(1 | 0)
对指定的窗口或控件允许或禁止鼠标和键盘输入。可用的状态为 0(禁止) 
或 1(允许)。
GetDlgItem $0 $HWNDPARENT 1
EnableWindow $0 0
Sleep 1000
EnableWindow $0 1


2. FindWindow
用户变量(窗口句柄输出) 窗口类名 [窗口标题] [父窗口句柄] [childafter]
查找一个窗口。类似于 Win32 FindWindowEx()。由窗口类名来查找(和/或窗口标题,如果指定的话)。如果指定了 “父窗口句柄” 或 
childafter,则查找会受到限制。如果窗口类名或窗口标题指定为 "",
则它们将不能用于查找。如果窗口未找到,用户变量将返回 0 值。要实
现旧式 FindWindow 行为,请和SendMessage一起使用。
FindWindow $0 "#32770" "" $HWNDPARENT
FIndWindow $0 "my window class" "my window title"



3. GetDlgItem
用户变量(输出) 窗口句柄 控件ID
在指定的对话框上根据控件ID获得控件句柄。如果你想获得安装程序内部
的控件句柄,请先使用 FindWindow 用户变量(窗口句柄输出) "#32770" 
"" $HWNDPARENT 来获取窗口句柄。
GetDlgItem $0 $HWNDPARENT 1 # 下一步、安装按钮


4.HideWindow
隐藏安装程序。


5.IsWindow
窗口句柄 是窗口时跳转的标记 [不是窗口时跳转的标记]
如果 “窗口句柄” 是一个窗口,则跳转到 “是窗口时跳转的标记”,
否则跳转到 “不是窗口时跳转的标记”(如果指定了的话)。
GetDlgItem $0 $HWNDPARENT 1
IsWindow 0 +3
  MessageBox MB_OK "找到窗口"
  Goto +2
  MessageBox MB_OK "无窗口"

6.SendMessage
窗口句柄 消息 第一个消息参数 第二个消息参数 [用户变量(返回值)] [/TIMEOUT=毫秒]
发送消息到 “窗口句柄”。如果指定了一个用户变量 $x 作为最后一个参数(或在 /TIMEOUT 之前的最后一个参数),SendMessage 的返回值将
保存在该变量里。需要注意的是当指定 “消息” 时你只能用消息的整数值。如果你需要发送字串请使用 “STR:字串” 作为 “第一个消息参数” 或 “第二个消息参数”。
WM_CLOSE 16
WM_COMMAND 273
WM_USER 1024
Include WinMessages.nsh 来获得所有 Windows 消息定义。
要发送一个字串参数的话,在参数前面加入 STR: ,例如: "STR:一些字串" 。
使用 /TIMEOUT=毫秒 来指定持续时间,单位为毫秒。
!include WinMessages.nsh
FindWindow $0 "Winamp v1.x"
SendMessage $0 ${WM_CLOSE} 0 0


7. SetCtlColors
句柄 [/BRANDING] [文本颜色] [transparent|背景颜色]
对一个静态控件、编辑控件、按钮或一个对话框设置一个背景颜色和文本
颜色。文本颜色 和 背景颜色 不能使用变量。使用 GetDlgItem 来获取
控件的句柄。如果要使得控件透明你可以指定 transparent 作为背景颜
色值。你也可以指定 /BRANDING 并带或不带文本颜色和背景颜色来使得
控件完全灰白(或其他你选择的颜色)。在 MUI 里用来显示标志牌。
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $0 $0 1006
SetCtlColors $0 0xFF0000 0x00FF00


8.ShowWindow
窗口句柄 显示状态
设置一个窗口的显示程度。可用的显示状态,和 Windoes 的ShowWindow
函数相同。SW_* 常量定义于 Include\WinMessages.nsh。
!include WinMessages.nsh
GetDlgItem $0 $HWNDPARENT 1
ShowWindow $0 ${SW_HIDE}
Sleep 1000
ShowWindow $0 ${SW_SHOW}
备注:要使用这些指令,最关键的就是要知道控件的ID,可以用工具
(如Microsoft Spy++,ResourceHack等)获得。

原创粉丝点击