주로

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

게임/마인크래프트

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

_주로 2024. 10. 1. 00:46
반응형
    // 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);
            // 창 제목에 "Minecraft"가 포함되어 있으면 핸들을 저장
            if (windowText.contains(partialTitle)) {
                hwnd[0] = hWnd;
                return false; // 창을 찾았으므로 열거를 중지합니다.
            }
            return true; // 계속 열거합니다.
        }, null);

        return hwnd[0];
    }

    // 주어진 HWND에 대한 창 제목을 가져오는 메서드
    public static String getWindowText(WinDef.HWND hWnd) {
        char[] windowText = new char[512];
        User32.INSTANCE.GetWindowText(hWnd, windowText, windowText.length);
        return Native.toString(windowText);
    }

 

예시

import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef;
import com.sun.jna.platform.win32.WinUser;

private static WinDef.HWND hwnd;

private static void main(){
	hwnd = findWindow(*title);
}
반응형
Comments