forked from davenonymous/winctl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
winctl.d.ts
225 lines (197 loc) · 5.79 KB
/
winctl.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
declare namespace WinCtl {
// Helper functions?
function FindWindows(validateFunc: Function): Promise<Window[]>;
function FindByTitle(title: string): Promise<Window>;
// Window functions
function GetActiveWindow(): Window;
function GetWindowByClassName(title: string): Window;
function GetWindowByTitleExact(title: string): Window;
function EnumerateWindows(win: Function): void;
interface Dimensions {
left: number;
top: number;
right: number;
bottom: number;
}
interface Monitor {
name: string;
primary: boolean;
dimensions: Dimensions;
}
interface Window {
/**
* If the window exists
*/
exists(): boolean;
/**
* If the window is visible
*/
isVisibile(): boolean;
/**
* Get the window title
*/
getTitle(): string;
/**
* Get the window handle
*/
getHwnd(): number;
/**
* Get the window class name
*/
getClassName(): string;
/**
* Get the window process id
*/
getPid(): number;
/**
* Get the window's parent window handle
*/
getParent(): number;
/**
* Get the window's ancestor window handle
*
* @param flag The ancestor flag - see {@link AncestorFlags}
*/
getAncestor(flag: AncestorFlags): number;
/**
* Get the {@link Monitor} the window is on
*/
getMonitor(): Monitor;
/**
* Set the window position
*
* @param x The new position of the left side of the window
* @param y The new position of the top of the window
* @param width The new width of the window
* @param height The new height of the window
*/
move(x: number, y: number, width: number, height: number): void;
/**
* Set the window position relative to it's current position
*
* @param x How far to move the window along x in pixels - positive is right, negative is left
* @param y How far to move the window along y in pixels - positive is down, negative is up
* @param width How much to resize the window width in pixels - positive is bigger, negative is smaller
* @param height How much to resize the window height in pixels - positive is bigger, negative is smaller
*/
moveRelative(x: number, y: number, width: number, height: number): void;
/**
* Set the window's state - see: {@link WindowStates}
*
* @param windowState The window state to set the window to
*/
showWindow(windowState: WindowStates): void;
/**
* Move the window to the foreground
*/
setForegroundWindow(): void;
/**
* Set the window's position
*
* @param hWndInsertAfter A handle to the window to precede the positioned window in the Z order or {@link HWND}
* @param x The new position of the left side of the window, in client coordinates
* @param y The new position of the top of the window, in client coordinates
* @param cx The new width of the window, in pixels
* @param cy The new height of the window, in pixels
* @param flags The flags to use - see: {@link SWP}
*/
setWindowPos(
hWndInsertAfter: HWND | number,
x: number,
y: number,
cx: number,
cy: number,
flags: SWP[]
): void;
/**
* Get the window's {@link Dimensions}
*/
dimensions(): Dimensions;
}
/**
* Possible window states
*/
enum WindowStates {
HIDE = 0,
SHOWNORMAL = 1,
SHOWMINIMIZED = 2,
MAXIMIZE = 3,
SHOWMAXIMIZED = 3,
SHOWNOACTIVATE = 4,
SHOW = 5,
MINIMIZE = 6,
SHOWMINNOACTIVE = 7,
SHOWNA = 8,
RESTORE = 9,
SHOWDEFAULT = 10,
FORCEMINIMIZE = 11,
}
/**
* Flags for the ancestor window
*
* Decides which ancestor to retrieve
*/
enum AncestorFlags {
PARENT = 1,
ROOT = 2,
ROOTOWNER = 3,
}
/**
* Window handle flags
*/
enum HWND {
NOTOPMOST = -2,
TOPMOST = -1,
TOP = 0,
BOTTOM = 1,
}
/**
* Window sizing and positioning flags
*
* See: {@link https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowpos}
*/
enum SWP {
NOSIZE = 0x0001,
NOMOVE = 0x0002,
NOZORDER = 0x0004,
NOREDRAW = 0x0008,
NOACTIVATE = 0x0010,
DRAWFRAME = 0x0020,
FRAMECHANGED = 0x0020,
SHOWWINDOW = 0x0040,
HIDEWINDOW = 0x0080,
NOCOPYBITS = 0x0100,
NOOWNERZORDER = 0x0200,
NOREPOSITION = 0x0200,
NOSENDCHANGING = 0x0400,
DEFERERASE = 0x2000,
ASYNCWINDOWPOS = 0x4000,
}
interface WindowEventsEmitter extends NodeJS.EventEmitter {
/**
* Emitted when {@link WindowEventsEmitter.checkActiveWindow()} is called
* and the active window has changed
*
* @param listener Callback contains the current and previous window
*/
on(event: "active-window", listener: (now: Window, previous: Window) => void): this;
addListener(event: "active-window", listener: (now: Window, previous: Window) => void): this;
/**
* Emitted when {@link WindowEventsEmitter.checkNewWindow()} is called
* and a new window has been created
*
* @param listener Callback contains the window that was created
*/
on(event: "window-created", listener: (win: Window) => void): this;
addListener(event: "open-window", listener: (win: Window) => void): this;
removeListener(event: "active-window" | "open-window"): this;
removeAllListeners(event: "active-window" | "open-window"): this;
updatePollingLoops(): this;
checkActiveWindow(): this;
checkNewWindow(): this;
}
const Events: WindowEventsEmitter;
}
declare module "winctl" {
export = WinCtl;
}