使用 Java RunnableJar 更改远程会话的屏幕分辨率
Change Screen Resolution of Remote Session using Java RunnableJar
更改当前系统的屏幕分辨率工作正常,但我需要更改远程会话的屏幕分辨率(它可能在 virtualbox 中)。已连接并通过程序我需要更改它。形成基于网络的应用程序,我将通过提供参数调用 runnable jar 文件。
public static void main(String[] args) throws InterruptedException, IOException {
screenResolution(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3])); // Screen Resolution of Remote Session.
}
public static void screenResolution(int width, int height, int bitDepth, int refreshRate) throws InterruptedException{
java.awt.GraphicsDevice graphicsDevice = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
java.awt.DisplayMode change_Mode = new DisplayMode(width, height, bitDepth, refreshRate);//DisplayMode.REFRESH_RATE_UNKNOWN);
DisplayMode[] supportedResolutions = graphicsDevice.getDisplayModes();
System.out.println(supportedResolutions.length);
for (DisplayMode resolution : supportedResolutions) {
System.out.format("%d by %d, (%dbit), %d Hertz \n", resolution.getWidth(), resolution.getHeight(), resolution.getBitDepth(), resolution.getRefreshRate());
if (resolution.equals(change_Mode)) {
System.out.format("supported = %s\n",resolution);
DisplayMode current_displayMode = graphicsDevice.getDisplayMode();
if (change_Mode.equals(current_displayMode))
System.out.println("=== No need to change Resolution ===");
else {
java.awt.GraphicsConfiguration graphConfig = graphicsDevice.getDefaultConfiguration();
javax.swing.JFrame frame = new JFrame("",graphConfig);
setResolution(graphicsDevice, frame, change_Mode);
}
break;
}
}
}
public static void setResolution(GraphicsDevice graphicsDevice, JFrame frame, DisplayMode displayMode) throws InterruptedException{
try {
graphicsDevice.setFullScreenWindow(frame);
graphicsDevice.setDisplayMode(displayMode);
frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
System.out.println("After Cahange Resolution : "+screenSize.getWidth()+" * "+screenSize.getHeight());
// doing other work......
Thread.sleep(1*60*1000); // min sec millisec
}catch(IllegalArgumentException e){
e.printStackTrace();
}finally{
frame.dispose(); //program terminates. screen resolution changes to previous resolution.
}
}
运行从控制台 D:\JarLocation>java -jar ChangeResolution.jar 1366 768 32 60
在当前机器上安装我的 jar 文件它工作正常。但是当客户使用不同的分辨率来测试他的 senario 时,我需要更改屏幕的分辨率。
我在远程机器上有 运行 相同的 jar 文件,但它无法更改。
即使是手动我也无法更改它。它说无法更改显示设置。
RDP - 连接到远程计算机的管理会话
yash.rdp 的 capthNode ► someip.rdp
通过这种方式连接客户端/我们的-java程序可以改变'DISPLAY'
的外观
更改当前系统的屏幕分辨率工作正常,但我需要更改远程会话的屏幕分辨率(它可能在 virtualbox 中)。已连接并通过程序我需要更改它。形成基于网络的应用程序,我将通过提供参数调用 runnable jar 文件。
public static void main(String[] args) throws InterruptedException, IOException {
screenResolution(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3])); // Screen Resolution of Remote Session.
}
public static void screenResolution(int width, int height, int bitDepth, int refreshRate) throws InterruptedException{
java.awt.GraphicsDevice graphicsDevice = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
java.awt.DisplayMode change_Mode = new DisplayMode(width, height, bitDepth, refreshRate);//DisplayMode.REFRESH_RATE_UNKNOWN);
DisplayMode[] supportedResolutions = graphicsDevice.getDisplayModes();
System.out.println(supportedResolutions.length);
for (DisplayMode resolution : supportedResolutions) {
System.out.format("%d by %d, (%dbit), %d Hertz \n", resolution.getWidth(), resolution.getHeight(), resolution.getBitDepth(), resolution.getRefreshRate());
if (resolution.equals(change_Mode)) {
System.out.format("supported = %s\n",resolution);
DisplayMode current_displayMode = graphicsDevice.getDisplayMode();
if (change_Mode.equals(current_displayMode))
System.out.println("=== No need to change Resolution ===");
else {
java.awt.GraphicsConfiguration graphConfig = graphicsDevice.getDefaultConfiguration();
javax.swing.JFrame frame = new JFrame("",graphConfig);
setResolution(graphicsDevice, frame, change_Mode);
}
break;
}
}
}
public static void setResolution(GraphicsDevice graphicsDevice, JFrame frame, DisplayMode displayMode) throws InterruptedException{
try {
graphicsDevice.setFullScreenWindow(frame);
graphicsDevice.setDisplayMode(displayMode);
frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
System.out.println("After Cahange Resolution : "+screenSize.getWidth()+" * "+screenSize.getHeight());
// doing other work......
Thread.sleep(1*60*1000); // min sec millisec
}catch(IllegalArgumentException e){
e.printStackTrace();
}finally{
frame.dispose(); //program terminates. screen resolution changes to previous resolution.
}
}
运行从控制台 D:\JarLocation>java -jar ChangeResolution.jar 1366 768 32 60
在当前机器上安装我的 jar 文件它工作正常。但是当客户使用不同的分辨率来测试他的 senario 时,我需要更改屏幕的分辨率。
我在远程机器上有 运行 相同的 jar 文件,但它无法更改。
即使是手动我也无法更改它。它说无法更改显示设置。
RDP - 连接到远程计算机的管理会话
yash.rdp 的 capthNode ► someip.rdp
通过这种方式连接客户端/我们的-java程序可以改变'DISPLAY'
的外观