跳到主要内容

窗口操作

ssf.Windows 模块提供了与 Windows 系统相关的界面操作功能,如枚举窗口、查找窗口、控制窗口显示等。

ssf.Windows

顶级窗口信息

定义了顶级窗口的详细信息。

属性名类型描述
pidnumber进程 ID
hwndnumber窗口句柄
pathstringEXE 路径
titlestring窗口标题
class_namestring窗口类名

ssf.WindowRectInfo 接口

窗口矩形信息

定义了窗口的位置和大小信息。

属性名类型描述
xnumber左边距
ynumber上边距
wnumber宽度
hnumber高度

ssf.RegModel 接口

注册表模型

定义了注册表项的详细信息。

属性名类型描述
keystring注册表键
valuestring注册表值
value_typenumber注册表值类型

ssf.WindowInfo 接口

窗口信息

定义了窗口的基本信息。

属性名类型描述
hwndnumber窗口句柄
titlestring窗口标题
class_namestring窗口类名

ssf.CmdInfo 接口

命令信息

定义了命令执行后的返回信息。

属性名类型描述
resultstring命令返回值
codenumber返回代码

ssf.enums 模块

枚举类型

CmdShow 枚举

定义了窗口显示方式的枚举值。

枚举值描述
SW_HIDE0隐藏窗口
SW_NORMAL1正常大小和位置显示窗口
SW_SHOWMAXIMIZED2最大化窗口
SW_MAXIMIZE3最大化窗口,但不激活
SW_SHOWNOACTIVATE4显示窗口,但不激活
SW_SHOW5在当前位置和大小显示窗口
SW_MINIMIZE6最小化窗口,并激活下一个顶层窗口
SW_SHOWMINNOACTIVE7最小化窗口,但不激活
SW_SHOWNA8显示窗口,不激活
SW_RESTORE9恢复窗口的大小和位置,激活并显示窗口
SW_SHOWDEFAULT10用默认的大小和位置显示窗口
SW_FORCEMINIMIZE11最小化窗口,即使程序不响应

WndInsertAfter 枚举

定义了窗口插入位置的枚举值。

枚举值描述
HWND_BOTTOM1窗口置于所有非顶层窗口的底部
HWND_NOTOPMOST-2窗口不置于顶层,即使禁用窗口
HWND_TOP0窗口置于所有非顶层窗口的顶部
HWND_TOPMOST-1窗口置于所有窗口的顶部,即使禁用窗口

SetwindowposFlags 枚举

定义了设置窗口位置和大小的标志位。

枚举值描述
SWP_ASYNCWINDOWPOS16384异步窗口位置调整
SWP_DEFERERASE8192防止擦除窗口的内容
SWP_DRAWFRAME32绘制窗口的边框
SWP_HIDEWINDOW128隐藏窗口
SWP_NOACTIVATE16不激活窗口
SWP_NOCOPYBITS256不复制客户区内容
SWP_NOMOVE2不改变窗口的位置
SWP_NOOWNERZORDER512不改变所有者窗口在 Z 顺序中的位置
SWP_NOREDRAW8不重绘窗口
SWP_NOREPOSITION512不重新定位窗口
SWP_NOSENDCHANGING1024阻止窗口接收 WM_WINDOWPOSCHANGING 消息
SWP_NOSIZE1不改变窗口的大小
SWP_NOZORDER4不改变窗口 Z 顺序
SWP_SHOWWINDOW64显示窗口

ssf.Windows 模块

enum_windows 方法

枚举所有窗口获得窗口名和类名。

ssf.Windows.enum_windows(): TopWindowsInfo[];

返回值

  • TopWindowsInfo[] - 所有顶级窗口的信息列表。

示例

const topWindows = ssf.Windows.enum_windows();
console.log('所有顶级窗口信息:', topWindows);

find_window 方法

通过窗口标题或者类名查找窗口。

ssf.Windows.find_window(class_name?: string, title?: string): number;

参数

参数名类型描述
class_namestring窗口类名(可选)
titlestring窗口标题(可选)

返回值

  • number - 找到的窗口句柄,未找到返回 0。

示例

const hwnd = ssf.Windows.find_window('Notepad', '无标题 - 记事本');
console.log('找到的窗口句柄:', hwnd);

find_process 方法

查找进程是否存在,存在返回 PID,不存在返回 0。

ssf.Windows.find_process(name: string): number;

参数

参数名类型描述
namestring进程名

返回值

  • number - 进程 ID,未找到返回 0。

示例

const pid = ssf.Windows.find_process('notepad.exe');
console.log('进程ID:', pid);

kill_process 方法

结束进程。

ssf.Windows.kill_process(pid: number): boolean;

参数

参数名类型描述
pidnumber进程 ID

返回值

  • boolean - 操作成功返回 true,失败返回 false

示例

const success = ssf.Windows.kill_process(1234);
console.log('结束进程结果:', success);

find_process_with_hwnd 方法

根据窗口句柄获得进程。

ssf.Windows.find_process_with_hwnd(hwnd: number): number;

参数

参数名类型描述
hwndnumber窗口句柄

返回值

  • number - 进程 ID。

示例

const pid = ssf.Windows.find_process_with_hwnd(12345);
console.log('进程ID:', pid);

is_windows_visible 方法

判断指定窗体是否可见。

ssf.Windows.is_windows_visible(hwnd: number): boolean;

参数

参数名类型描述
hwndnumber窗口句柄

返回值

  • boolean - 窗口可见返回 true,不可见返回 false

示例

const isVisible = ssf.Windows.is_windows_visible(12345);
console.log('窗口是否可见:', isVisible);

get_foreground_window 方法

获得当前激活的窗体。

ssf.Windows.get_foreground_window(): number;

返回值

  • number - 当前激活窗口的句柄。

示例

const hwnd = ssf.Windows.get_foreground_window();
console.log('当前激活窗口句柄:', hwnd);

get_top_window 方法

获得顶部窗体。

ssf.Windows.get_top_window(hwnd: number): number;

参数

参数名类型描述
hwndnumber父窗口句柄

返回值

  • number - 顶部窗口的句柄。

示例

const topHwnd = ssf.Windows.get_top_window(12345);
console.log('顶部窗口句柄:', topHwnd);

get_desktop_window 方法

获得桌面。

ssf.Windows.get_desktop_window(): number;

返回值

  • number - 桌面窗口的句柄。

示例

const desktopHwnd = ssf.Windows.get_desktop_window();
console.log('桌面窗口句柄:', desktopHwnd);

get_current_thread_id 方法

获得当前进程。

ssf.Windows.get_current_thread_id(): number;

返回值

  • number - 当前线程的 ID。

示例

const threadId = ssf.Windows.get_current_thread_id();
console.log('当前线程ID:', threadId);

set_foreground_window 方法

激活窗体。

ssf.Windows.set_foreground_window(hwnd: number): number;

参数

参数名类型描述
hwndnumber窗口句柄

返回值

  • number - 操作结果,通常为窗口句柄。

示例

const hwnd = ssf.Windows.set_foreground_window(12345);
console.log('激活窗口句柄:', hwnd);

show_window 方法

显示窗体。

ssf.Windows.show_window(hwnd: number, m_cmd_show: enums.CmdShow): boolean;

参数

参数名类型描述
hwndnumber窗口句柄
m_cmd_showenums.CmdShow显示方式

返回值

  • boolean - 操作成功返回 true,失败返回 false

示例

const success = ssf.Windows.show_window(12345, ssf.enums.CmdShow.SW_SHOW);
console.log('显示窗口结果:', success);

set_window_pos 方法

设置窗体的位置和大小。

ssf.Windows.set_window_pos(
hwnd: number,
x: number,
y: number,
w: number,
h: number,
hwndinsertafter: enums.WndInsertAfter,
flag: enums.SetwindowposFlags,
): number;

参数

参数名类型描述
hwndnumber窗口句柄
xnumberX 坐标
ynumberY 坐标
wnumber宽度
hnumber高度
hwndinsertafterenums.WndInsertAfter插入位置
flagenums.SetwindowposFlags标志位

返回值

  • number - 操作结果,通常为窗口句柄。

示例

const hwnd = ssf.Windows.set_window_pos(12345, 100, 100, 800, 600, ssf.enums.WndInsertAfter.HWND_TOP, ssf.enums.SetwindowposFlags.SWP_SHOWWINDOW);
console.log('设置窗口位置和大小结果:', hwnd);

switch_to_this_window 方法

类似 Alt+Tab 键切换窗体。

ssf.Windows.switch_to_this_window(hwnd: number): void;

参数

参数名类型描述
hwndnumber窗口句柄

示例

ssf.Windows.switch_to_this_window(12345);

set_focus 方法

设置窗体焦点。

ssf.Windows.set_focus(hwnd: number): number;

参数

参数名类型描述
hwndnumber窗口句柄

返回值

  • number - 操作结果,通常为窗口句柄。

示例

const hwnd = ssf.Windows.set_focus(12345);
console.log('设置焦点结果:', hwnd);

get_window_rect 方法

获得窗体的位置和大小。

ssf.Windows.get_window_rect(hwnd: number): WindowRectInfo;

参数

参数名类型描述
hwndnumber窗口句柄

返回值

  • WindowRectInfo - 窗口的位置和大小信息。

示例

const rect = ssf.Windows.get_window_rect(12345);
console.log('窗口位置和大小:', rect);

get_parent_window 方法

获得窗体的父窗体。

ssf.Windows.get_parent_window(hwnd: number): WindowInfo;

参数

参数名类型描述
hwndnumber窗口句柄

返回值

  • WindowInfo - 父窗口的信息。

示例

const parentWindow = ssf.Windows.get_parent_window(12345);
console.log('父窗口信息:', parentWindow);

enum_child_windows 方法

枚举窗体的子窗体。

ssf.Windows.enum_child_windows(hwnd: number): WindowInfo[];

参数

参数名类型描述
hwndnumber父窗口句柄

返回值

  • WindowInfo[] - 子窗口的信息列表。

示例

const childWindows = ssf.Windows.enum_child_windows(12345);
console.log('子窗口信息:', childWindows);

run 方法

运行程序。

ssf.Windows.run(path: string, args: string[]): number;

参数

参数名类型描述
pathstring程序路径
argsstring[]参数列表

返回值

  • number - 进程 ID。

示例

const pid = ssf.Windows.run('C:\\Program Files\\Notepad++\\notepad++.exe', []);
console.log('启动程序PID:', pid);

cmd 方法

执行命令并获得返回值。

ssf.Windows.cmd(path: string, args: string[]): CmdInfo;

参数

参数名类型描述
pathstring命令路径
argsstring[]参数列表

返回值

  • CmdInfo - 命令执行后的返回信息。

示例

const cmdResult = ssf.Windows.cmd('dir', ['/b']);
console.log('命令执行结果:', cmdResult);

get_reg_value_list 方法

获得注册表值列表。

ssf.Windows.get_reg_value_list(path: string): RegModel[];

参数

参数名类型描述
pathstring注册表路径

返回值

  • RegModel[] - 注册表值列表。

示例

const regValues = ssf.Windows.get_reg_value_list('\\HKEY_CURRENT_USER\\Software\\Microsoft\\');
console.log('注册表值列表:', regValues);

get_reg_key_list 方法

获得注册表键列表。

ssf.Windows.get_reg_key_list(path: string): string[];

参数

参数名类型描述
pathstring注册表路径

返回值

  • string[] - 注册表键列表。

示例

const regKeys = ssf.Windows.get_reg_key_list('\\HKEY_CURRENT_USER\\Software\\Microsoft\\');
console.log('注册表键列表:', regKeys);

get_reg_value 方法

获得注册表单个值。

ssf.Windows.get_reg_value(path: string, name: string): string;

参数

参数名类型描述
pathstring注册表路径
namestring注册表值名称

返回值

  • string - 注册表值。

示例

const regValue = ssf.Windows.get_reg_value('\\HKEY_CURRENT_USER\\Software\\Microsoft\\Clipboard', 'ShellHotKeyUsed');
console.log('注册表值:', regValue);