주로
[fabric] 현재 활성화된 윈도우의 핸들을 PID를 통해 구하기 본문
반응형
private static boolean isinitializedHandle = false;
public static WinDef.HWND hMinecraft;
public static void inithMinecraft() {
if(isinitializedHandle)
return;
isinitializedHandle = true;
System.out.println("initialized mincraft handle");
// 자신의 PID를 얻기
long pid = ProcessHandle.current().pid();
// PID로 HWND 얻기
HWND hwnd = findWindowByPID(pid);
hMinecraft = hwnd;
// 여기에 원하는 로직을 추가
}
private static HWND findWindowByPID(long pid) {
final HWND[] hwnd = new HWND[1];
User32.INSTANCE.EnumWindows((hWnd, arg1) -> {
// 프로세스 ID를 가져오기
int processId = getWindowProcessId(hWnd);
if (processId == pid) {
hwnd[0] = hWnd;
return false; // 찾으면 열거를 중지합니다.
}
return true; // 계속 열거합니다.
}, null);
return hwnd[0];
}
// HWND로 프로세스 ID를 얻는 메서드
private static int getWindowProcessId(HWND hWnd) {
IntByReference processId = new IntByReference(); // IntByReference 사용
User32.INSTANCE.GetWindowThreadProcessId(hWnd, processId);
return processId.getValue(); // 프로세스 ID 반환
}
반응형
'게임 > 마인크래프트' 카테고리의 다른 글
[fabric] 클라이언트 측에서 채팅 메시지(로컬) 띄우기 (0) | 2024.10.02 |
---|---|
[fabric] 윈도우 메시지를 통한 키보드/마우스 간단한 제어 예시 (0) | 2024.10.01 |
JAVA(fabric) 특정 문자열을 포함한 윈도우 핸들 구하기 (0) | 2024.10.01 |
Fabric 키 바인딩의 예시와 함수화 (0) | 2024.09.30 |
[명령어] 인챈트 코드 및 설명 (1.20.5 버전 이상) (3) | 2024.07.22 |
Comments