import ctypes, sys
from ctypes import wintypes
import win32gui, win32con
import psutil

sys.stdout.reconfigure(encoding='utf-8')
user32 = ctypes.windll.user32
hdesk = user32.OpenInputDesktop(0, False, 0x01FF)
if hdesk: user32.SetThreadDesktop(hdesk)

pids = [p.pid for p in psutil.process_iter(['pid', 'name']) if 'JXHelper' in (p.info['name'] or '')]
if not pids:
    print('No JXHelper process found')
    sys.exit(0)

target_pid = pids[0]
hwnds = []
def cb(h, _):
    pid = wintypes.DWORD()
    user32.GetWindowThreadProcessId(h, ctypes.byref(pid))
    if pid.value == target_pid:
        hwnds.append(h)
    return True

WNDENUMPROC = ctypes.WINFUNCTYPE(wintypes.BOOL, wintypes.HWND, wintypes.LPARAM)
user32.EnumWindows(WNDENUMPROC(cb), 0)

for main_h in hwnds:
    def child_cb(ch, _):
        cls_buf = ctypes.create_unicode_buffer(256)
        user32.GetClassNameW(ch, cls_buf, 256)
        if 'combobox' in cls_buf.value.lower() or 'WindowsForms10.COMBOBOX' in cls_buf.value:
            count = win32gui.SendMessage(ch, win32con.CB_GETCOUNT, 0, 0)
            items = []
            for i in range(count):
                txt_len = win32gui.SendMessage(ch, win32con.CB_GETLBTEXTLEN, i, 0)
                buf = ctypes.create_unicode_buffer(txt_len + 1)
                win32gui.SendMessage(ch, win32con.CB_GETLBTEXT, i, buf)
                items.append(buf.value)
            cur_idx = win32gui.SendMessage(ch, win32con.CB_GETCURSEL, 0, 0)
            cur_text = items[cur_idx] if 0 <= cur_idx < len(items) else ''
            if any('Hoạt Bất Lưu Thủ' in it or 'Chọn chiêu' in it for it in items):
                print(f'Combo {hex(ch)} (count={count}, selected="{cur_text}"):')
                for it in items:
                    print(f'   - {it}')
        return True
    user32.EnumChildWindows(main_h, WNDENUMPROC(child_cb), 0)
