Здравствуйте, я работаю над программой, использующей JNA 4.5.1. Мне нужно знать, запущена ли конкретная программа или нет. Вот моя проблема:
hwnd = User32.INSTANCE.FindWindow
(null, "Session Dev/Prod - [32 x 80]");
if (hwnd == null) {
System.out.println("Session Dev/Prod is not running");
Process p = null;
try {
p = Runtime.getRuntime()
.exec("rundll32
url.dll,FileProtocolHandler C:
/ProgramData/Microsoft/Windows/Start
Menu/Programs/IBM Personal
Communications/TNHost");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
p.waitFor();
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
else{
System.out.println("Host Already open");
User32.INSTANCE.ShowWindow(hwnd, User32.SW_MAXIMIZE );
User32.INSTANCE.SetForegroundWindow(hwnd);
}
Проблема в том, что заголовок окна меняется в зависимости от размера монитора.
hwnd = User32.INSTANCE.FindWindow(null, "Session Dev/Prod - [32 x 80]");
Заголовок всегда "Session Dev/Prod" + размер, который меняется.
Мне нужно найти окно, которое начинается с "Session Dev/Prod". Кто-нибудь знает как это сделать. Или есть другой способ узнать, запущена программа или нет? Я пытался сделать это с Regex в качестве параметра, но функция принимает только строку.
Спасибо