ControlSetStyle / ControlSetExStyle

分别更改指定控件的样式或扩展样式.

ControlSetStyle Value, Control , WinTitle, WinText, ExcludeTitle, ExcludeText
ControlSetExStyle Value, Control , WinTitle, WinText, ExcludeTitle, ExcludeText

参数

Value

类型: 整数字符串

传递一个正整数来完全覆盖窗口的样式; 也就是说, 设置它的值为 Value.

要添加, 删除或切换样式, 请分别传递一个以加号(+), 减号(-) 或插入符号(^) 前缀的数字字符串. 新样式值的计算如下所示(其中 CurrentStyle 可以通过 ControlGetStyle, ControlGetExStyle, WinGetStyle or WinGetExStyle 检索):

操作 前缀 示例 公式
添加 + "+0x80" NewStyle := CurrentStyle | Value
删除 - "-0x80" NewStyle := CurrentStyle & ~Value
切换 ^ "^0x80" NewStyle := CurrentStyle ^ Value

如果 Value 是一个负整数, 它将被视为与对应的数字字符串相同.

要在表达式中原义使用 + 或 ^ 前缀, 前缀或值必须用引号括起来. 例如: ControlSetStyle("+0x80")ControlSetStyle("^" StylesToToggle). 这是因为表达式 +123 产生 123(没有前缀), 而 ^123 是一个语法错误.

Control

类型: 字符串, 整数对象

控件的 ClassNN, 文本或 HWND, 或具有 Hwnd 属性的对象. 有关详情, 请参阅 Control 参数.

WinTitle, WinText, ExcludeTitle, ExcludeText

类型: 字符串, 整数对象

如果这些都是空白或省略, 将使用上次找到的窗口. 否则, 为 WinTitle 指定窗口标题或其他条件, 来标识目标窗口, 和/或为 WinText 指定目标窗口的单个文本元素的子字符串(由包含的 Window Spy 实用程序显示).

ExcludeTitleExcludeText 可用于根据标题或文本排除一个或多个窗口. 它们的规范类似于 WinTitleWinText, 除了 ExcludeTitle 不识别除窗口标题之外的任何条件.

窗口标题和文本是区分大小写的. 默认情况下, 不检测隐藏窗口, 而检测隐藏文本元素, 除非使用 DetectHiddenWindowsDetectHiddenText 进行更改. 默认情况下, 窗口标题的任意位置包含 WinTitleExcludeTitle 就能形成匹配, 除非使用 SetTitleMatchMode 进行了更改.

错误处理

如果找不到窗口或控件, 则抛出 TargetError.

如果样式不能被改变, 则抛出 OSError. 部分改变被视为是成功的.

备注

有关样式的部分列表, 请参阅样式列表.

某些样式更改要求使用 WinRedraw 重新绘制整个窗口.

ControlGetStyle / ControlGetExStyle, WinSetStyle / WinSetExStyle, 样式列表, 控件函数

示例

设置记事本编辑控件的 WS_BORDER 样式为其相反的状态.

ControlSetStyle("^0x800000", "Edit1", "ahk_class Notepad")