41 lines
1.2 KiB
Lua
Executable File
41 lines
1.2 KiB
Lua
Executable File
-- using Alien to find out what the caption title of SciTE is,
|
|
-- and iterating over all top-level windows.
|
|
-- Ensure that SciTE is running first!
|
|
require 'alien'
|
|
local user = alien.load 'user32.dll'
|
|
|
|
-- these are the API calls needed. Note two NB things:
|
|
-- (1) functions dealing with text ending with 'A' are for ASCII
|
|
-- (2) need to specify abi to get proper __stdcall
|
|
user.FindWindowA:types {"string","string",abi="stdcall"}
|
|
user.GetWindowTextA:types {"int","string","int",abi="stdcall"}
|
|
|
|
find = user.FindWindowA
|
|
gettext = user.GetWindowTextA
|
|
|
|
-- find the handle of the SciTE window using its class name
|
|
hwnd = find("SciTEWindow",nil)
|
|
|
|
-- and grab the text of that window (will be the caption)
|
|
-- create a buffer and it will be filled!
|
|
buf = alien.buffer(128)
|
|
gettext(hwnd,buf,128)
|
|
print(buf:tostring())
|
|
|
|
-- Iterating over all top-level windows.
|
|
-- again, note the abi for both EnumWindows and the callback! EnumWindows is
|
|
-- expecting an _integer_ back from the callback, where 1 means 'true' means
|
|
-- 'continue going'
|
|
function each_hwnd (hwnd,p)
|
|
print(hwnd)
|
|
return 1
|
|
end
|
|
|
|
each_hwnd_callback = alien.callback(each_hwnd,{"int","pointer",abi="stdcall"})
|
|
|
|
user.EnumWindows:types {"callback","pointer",abi="stdcall"}
|
|
|
|
user.EnumWindows(each_hwnd_callback,nil)
|
|
|
|
|