Quote:
Originally Posted by turbulent
And I doubt whether the method of enumerating all windows could get the right title I need.
|
O ye of little faith?
If only one instance of Sigil is running, enumerating all windows will definitely get you the right title. For example,
this code that I stole from stack overflow works just fine:
Code:
#!/usr/bin/env python
import ctypes
def run(bk):
EnumWindows = ctypes.windll.user32.EnumWindows
EnumWindowsProc = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.POINTER(ctypes.c_int), ctypes.POINTER(ctypes.c_int))
GetWindowText = ctypes.windll.user32.GetWindowTextW
GetWindowTextLength = ctypes.windll.user32.GetWindowTextLengthW
IsWindowVisible = ctypes.windll.user32.IsWindowVisible
titles = []
def foreach_window(hwnd, lParam):
if IsWindowVisible(hwnd):
length = GetWindowTextLength(hwnd)
buff = ctypes.create_unicode_buffer(length + 1)
GetWindowText(hwnd, buff, length + 1)
if buff.value.find('Sigil') > 0:
titles.append(buff.value)
return True
EnumWindows(EnumWindowsProc(foreach_window), 0)
print(titles)
return 0
def main():
print('I reached main when I should not have\n')
return -1
if __name__ == "__main__":
sys.exit(main())