import ctypes

import win32api
import win32con
import win32service

print("Testing Desktop switch to 'Default' via ctypes.windll.user32.SetThreadDesktop...")
try:
    h_desk = win32service.OpenDesktop("Default", 0, False, win32con.GENERIC_ALL)
    desk_name = win32service.GetUserObjectInformation(h_desk, win32service.UOI_NAME)
    print(f"Successfully opened desktop: {desk_name} (Handle: {int(h_desk)})")

    res = ctypes.windll.user32.SetThreadDesktop(int(h_desk))
    print(f"SetThreadDesktop result: {res} (GetLastError: {ctypes.GetLastError()})")

    current_desk = win32service.GetThreadDesktop(win32api.GetCurrentThreadId())
    current_name = win32service.GetUserObjectInformation(current_desk, win32service.UOI_NAME)
    print(f"Current Thread Desktop is now: {current_name}")
except Exception as e:
    print(f"Error: {e}")
