Created
June 30, 2014 22:00
-
-
Save vladholubiev/0a48c041d3ffed69fb6f to your computer and use it in GitHub Desktop.
Get current active windows title and process using JNA
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import static enumeration.EnumerateWindows.Kernel32.*; | |
import static enumeration.EnumerateWindows.Psapi.*; | |
import static enumeration.EnumerateWindows.User32DLL.*; | |
import com.sun.jna.Native; | |
import com.sun.jna.Pointer; | |
import com.sun.jna.platform.win32.WinDef.HWND; | |
import com.sun.jna.ptr.PointerByReference; | |
public class EnumerateWindows { | |
private static final int MAX_TITLE_LENGTH = 1024; | |
public static void main(String[] args) throws Exception { | |
char[] buffer = new char[MAX_TITLE_LENGTH * 2]; | |
GetWindowTextW(GetForegroundWindow(), buffer, MAX_TITLE_LENGTH); | |
System.out.println("Active window title: " + Native.toString(buffer)); | |
PointerByReference pointer = new PointerByReference(); | |
GetWindowThreadProcessId(GetForegroundWindow(), pointer); | |
Pointer process = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, false, pointer.getValue()); | |
GetModuleBaseNameW(process, null, buffer, MAX_TITLE_LENGTH); | |
System.out.println("Active window process: " + Native.toString(buffer)); | |
} | |
static class Psapi { | |
static { Native.register("psapi"); } | |
public static native int GetModuleBaseNameW(Pointer hProcess, Pointer hmodule, char[] lpBaseName, int size); | |
} | |
static class Kernel32 { | |
static { Native.register("kernel32"); } | |
public static int PROCESS_QUERY_INFORMATION = 0x0400; | |
public static int PROCESS_VM_READ = 0x0010; | |
public static native int GetLastError(); | |
public static native Pointer OpenProcess(int dwDesiredAccess, boolean bInheritHandle, Pointer pointer); | |
} | |
static class User32DLL { | |
static { Native.register("user32"); } | |
public static native int GetWindowThreadProcessId(HWND hWnd, PointerByReference pref); | |
public static native HWND GetForegroundWindow(); | |
public static native int GetWindowTextW(HWND hWnd, char[] lpString, int nMaxCount); | |
} | |
} |
NecroMancer05
commented
May 28, 2018
This java class is incomplete. Lots of methods are not yet defined in this class. How to solve all these undefined methods here?
I had a problem, there is exceptions, erros, it show the active window but then crashes. How to show all opne windows, not only the main one?
Anyway it worked to show only 1 window, so it deserved a star.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment