Здравствуйте, я использую JNA, и я хочу, чтобы другая программа появилась на экране с фокусом, но она не работает.
Так вот мой код.
import java.util.Scanner;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef;public class Main {
public static void main(String args[]) {
System.out.println("test");
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
sc.close();
System.out.println(number);
setFocusToWindowsApp("점포관리", number);
System.exit(0);
}
public static void setFocusToWindowsApp(String applicationTitle, int windowState) {
//int state = User32.SW_SHOWNORMAL; // default window state (Normal)
int state = windowState;
switch (state) {
default:
case 0:
state = User32.SW_SHOWNORMAL;
break;
case 1:
state = User32.SW_SHOWMAXIMIZED;
break;
case 2:
state = User32.SW_SHOWMINIMIZED;
break;
}
User32 user32 = User32.INSTANCE;
WinDef.HWND hWnd = user32.FindWindow(null, applicationTitle);
if (user32.IsWindowVisible(hWnd)) {
user32.ShowWindow(hWnd, state); // .SW_SHOW);
user32.SetForegroundWindow(hWnd);
user32.SetFocus(hWnd);
}
}
}
этот код только для проверки ... без сканера, он работает просто отлично.но со сканером работает только SW_SHOWMAXIMIZED.В противном случае программа просто не появится на экране.он просто мигает на панели значков.я думаю, что сканер связан с системным вызовом или что-то еще, поэтому он связывается с user32.Я думаю.Я попробовал каждый флаг в документе. (SW_SHOWNORMAL, SW_SHOWMAXIMIZED и т. д.), но работает только SW_SHOWMAXIMIZED. Я не хочу, чтобы окно было развернуто.*