from ctypes import POINTER, WINFUNCTYPE, WinError, create_unicode_buffer, get_last_error, windll from ctypes.wintypes import BOOL, DWORD, HBRUSH, HDC, HINSTANCE, HMENU, HWND, LPARAM, LPCWSTR, LPVOID, LPWSTR, INT, RECT import time user32 = windll.user32 gdi32 = windll.gdi32 CB_ENUM_WINDOWS = WINFUNCTYPE(BOOL, HWND, LPARAM) # thanks: https://stackoverflow.com/questions/37501191/how-to-get-windows-window-names-with-ctypes-in-python def check_zero(result, func, args): if not result: err = get_last_error() if err: raise WinError(err) return args user32.CreateWindowExW.argtypes = [ DWORD, LPCWSTR, LPCWSTR, DWORD, INT, INT, INT, INT, HWND, HMENU, HINSTANCE, LPVOID ] user32.CreateWindowExW.errcheck = check_zero user32.FillRect.argtypes = [HDC, POINTER(RECT), HBRUSH] user32.GetWindowDC.argtypes = [HWND] user32.GetWindowDC.errcheck = check_zero user32.GetWindowTextLengthW.argtypes = [HWND] user32.GetWindowTextLengthW.errcheck = check_zero user32.GetWindowTextW.argtypes = [HWND, LPWSTR, INT] user32.GetWindowTextW.errcheck = check_zero def find_all_windows(): windows = [] @CB_ENUM_WINDOWS def _handle_window(hwnd, lparam): # +1: make room for the null length = user32.GetWindowTextLengthW(hwnd) + 1 buffer = create_unicode_buffer(length) user32.GetWindowTextW(hwnd, buffer, length) windows.append((hwnd, buffer.value)) return True user32.EnumWindows(_handle_window, 0) return windows def fix_window(window): """ hdc = user32.GetWindowDC(window) rect = RECT(0, 0, 10000, 10000) brush = gdi32.CreateSolidBrush(0x00FF0000) user32.FillRect(hdc, rect, brush) gdi32.DeleteObject(brush) print(window) """ classname = create_unicode_buffer("overlapper\x00") windowname = create_unicode_buffer("overlapper\x00") window = user32.CreateWindowExW( 0x08000000 | # WS_EX_NOACTIVATE 0x8 | # WS_EX_TOPMOST 0x0, # 0x20, # WS_EX_TRANSPARENT classname, windowname, 0x10000000, # WS_VISIBLE 0, 0, 128, 128, # x y w h None, None, None, None ) user32.ShowWindow(window, 5) # SW_SHOW def fix_step(): windows = find_all_windows() for window_id, window_name in windows: if window_name.endswith("Visual Studio Code"): fix_window(window_id) def main(): fix_step() while True: time.sleep(1) if __name__ == "__main__": main()