用java通过调用C++的DLL文件来修改系统分辨率(一)
来源:互联网 发布:淘宝寄错东西了怎么办 编辑:程序博客网 时间:2024/06/08 10:27
一、多个显示器的模式
1、 更大的windows桌面,在多显示器模式下,可以把多个显示器的显示区域结合在一起来显示Windows桌面,不管这些显示器的尺寸、物理位置、分辨率和刷新频率是否相同。当我们运行一个应用程序时,程序的主窗口可以位于任何一个显示器的显示区域内,也可以跨多个显示区域。我们也可以把一个程序的窗口从一个显示区域移到另一个显示区域中。
2、 复制模式:指各个显示屏的分辨率都是一样的,位置是0——分辨率值。
3、 扩展模式:首先Windows系统会识别一个主显示器,这个可以在屏幕分辨率中更改。多个显示器之间的位置关系也可以再屏幕分辨率中更改。其中主显示器的位置为(0,0)到(width,height),其他显示器位置由与主显示器的位置关系决定,在主显示器左上,则为负数,用0减去长宽;在右下,则由主显示器的分辨率加上长宽。其中驱动或用mouse_event处理时也是一样,主显示器为0~65535,其他显示器根据主显示器的相对位置确定。
问题:项目多显卡多屏是采用的哪种模式。
二、Java的swing开发提供的相应功能
1、 sigar.jar包读取系统信息,从API上来看,只是获取到系统信息,不能对windows系统进行设置。
2、 获取显示器信息并显示在对应的显示器上
GraphicsEnvironment ge =GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice[] gs = ge.getScreenDevices(); for (int j = 0; j < gs.length; j++) { GraphicsDevice gd = gs[j]; GraphicsConfiguration[] gc = gd.getConfigurations(); for (int i=0; i < gc.length; i++) { JFrame f = new JFrame(gs[j].getDefaultConfiguration()); Canvas c = new Canvas(gc[i]); Rectangle gcBounds = gc[i].getBounds(); int xoffs = gcBounds.x; int yoffs = gcBounds.y; f.getContentPane().add(c); f.setLocation((i*50)+xoffs, (i*60)+yoffs); f.show(); } }
问题:通过baidu和google的搜索并未找到相应的java控制显卡的解决方案。
三、VS中实现的相应功能
1、 C#:可以实现对显示器的屏幕更改。
2、 C++:提供了通过windows系统对数据的读取。
问题:系统要求是用java编写C/S模式程序,要把C#和C++与java结合起来
四、推荐解决方案
用java调用dll文件来实现对显卡显示器的控制,vs中要用C++来编写dll文件,C#不可行,因为C#生产的dll文件严格上来讲不是windows系统上的dll文件,如需使用,还要添加别的步骤才行。
Java调用dll文件的方式:jni,jna,jnative
本人采用的是jnative方式调用。
- 用java通过调用C++的DLL文件来修改系统分辨率(一)
- ◎通过修改dll来修改系统
- java通过jni调用c编译的dll或so
- java通过JNA调用c语言dll
- java通过JNative调用.dll文件
- Java调用C语言DLL文件方法
- Java/c/c++调用DLL文件
- c#系统DLL调用
- 通过修改注册表来修改系统的默认安装路径
- 通过调用rundll32.exe来打开一些系统特定文件
- 调用C语言编写的DLL文件
- Java学习之通过JNI调用C/C++编写的dll链接库(图文教程)
- Java学习之通过JNI调用C/C++编写的dll链接库(图文教程)
- 通过调用dll来扩展Tcl命令
- 通过COM组件方式实现java调用C#写的DLL文件 转
- 通过COM组件方式实现java调用C#写的DLL文件
- 通过COM组件方式实现java调用C#写的DLL文件
- 通过COM组件方式实现java调用C#写的DLL文件
- leetcode 208. Implement Trie (Prefix Tree)字典树
- Js获取短信验证码前段效果
- File---文件类
- MySQL乐观锁
- Maven的ActiveMQ+spring的简单使用
- 用java通过调用C++的DLL文件来修改系统分辨率(一)
- C++学习(14)
- jquery使用on给未来元素绑定事件
- JSP 客户端请求
- java第一章_运算符_赋值运算符
- 查看CentOS上Apache位置,版本,停止,启动
- 异常处理及try/catch/finally/return 的执行顺序:
- 1 pytorch60分钟入门教程
- __all__暴露接口