import ctypes, time
from ctypes import wintypes
import win32gui
from PIL import ImageGrab

user32 = ctypes.windll.user32
hdesk = user32.OpenInputDesktop(0, False, 0x01FF)
if hdesk:
    user32.SetThreadDesktop(hdesk)

hwnd = 0xdf137a

def make_lparam(x, y):
    return (y << 16) | (x & 0xFFFF)

def make_key_lparam(vk, is_keyup):
    scan = user32.MapVirtualKeyW(vk, 0)
    flags = scan << 16 | 1
    if is_keyup:
        flags |= (1 << 30) | (1 << 31)
    return flags

WM_MOUSEMOVE = 0x0200
WM_LBUTTONDOWN = 0x0201
WM_LBUTTONUP = 0x0202
WM_KEYDOWN = 0x0100
WM_KEYUP = 0x0101
MK_LBUTTON = 0x0001
VK_RETURN = 0x0D

print("1. Sending MouseMove and Click at (400, 395)...")
lp = make_lparam(400, 395)
user32.PostMessageW(hwnd, WM_MOUSEMOVE, 0, lp)
time.sleep(0.05)
user32.PostMessageW(hwnd, WM_LBUTTONDOWN, MK_LBUTTON, lp)
time.sleep(0.08)
user32.PostMessageW(hwnd, WM_LBUTTONUP, 0, lp)

time.sleep(0.5)

print("2. Sending VK_RETURN with proper scan code...")
lp_down = make_key_lparam(VK_RETURN, False)
lp_up = make_key_lparam(VK_RETURN, True)
user32.PostMessageW(hwnd, WM_KEYDOWN, VK_RETURN, lp_down)
time.sleep(0.08)
user32.PostMessageW(hwnd, WM_KEYUP, VK_RETURN, lp_up)

time.sleep(2)

rect = win32gui.GetWindowRect(hwnd)
img = ImageGrab.grab(bbox=rect)
save_path = r'c:\Projects\JX\logs\game_after_enter.png'
img.save(save_path)
print(f"Saved screenshot to {save_path}")
