주로

[fabric] 윈도우 메시지를 통한 키보드/마우스 간단한 제어 예시 본문

게임/마인크래프트

[fabric] 윈도우 메시지를 통한 키보드/마우스 간단한 제어 예시

_주로 2024. 10. 1. 01:07
반응형
   public static WinDef.LPARAM KEY_DOWN = new WinDef.LPARAM(0x00000001);
    public static WinDef.LPARAM KEY_UP = new WinDef.LPARAM(0xC0000001);

    public static void keyInput(WinDef.HWND hwnd, WinDef.WPARAM key, WinDef.LPARAM state)
    {
        if(state.equals(KEY_DOWN))
            User32.INSTANCE.SendMessage(hwnd, WinUser.WM_KEYDOWN, key, state);
        else if(state.equals(KEY_UP))
            User32.INSTANCE.SendMessage(hwnd, WinUser.WM_KEYUP, key, state);
    }

    public final static int VM_LBUTTONDOWN = 0x201;
    public final static int VM_LBUTTONUP = 0x202;
    public final static int VM_RBUTTONDOWN = 0x204;
    public final static int VM_RBUTTONUP = 0x205;

    public static void mouseInput(WinDef.HWND hwnd, int key)
    {
        if(key == VM_LBUTTONDOWN || key == VM_RBUTTONDOWN)
            User32.INSTANCE.SendMessage(hwnd, key, new WinDef.WPARAM(1), new WinDef.LPARAM(0));
        else if(key == VM_LBUTTONUP || key == VM_RBUTTONUP)
            User32.INSTANCE.SendMessage(hwnd, key, new WinDef.WPARAM(0), new WinDef.LPARAM(0));

    }

 

핸들 구하는 함수는 아래 링크

https://benxen.tistory.com/83

 

JAVA(fabric) 특정 문자열을 포함한 윈도우 핸들 구하기

// Minecraft 창을 찾는 메서드 public static WinDef.HWND findWindow(String partialTitle) { final WinDef.HWND[] hwnd = new WinDef.HWND[1]; User32.INSTANCE.EnumWindows((hWnd, arg1) -> { String windowText = getWindowText(hWnd); // 창 제목에 "Minecra

benxen.tistory.com

 

반응형
Comments