我正在寻找一种通过Java来模拟操作系统(特定于Windows)操作的方法。 最好,程序应该在后台运行,但如果不是这样的话,这并不重要。 感谢这个问题,我得到了背景部分。 我正在寻找以下具体function:
是否有可能从Java程序最小化/最大化或closures应用程序窗口? (在Windows中 )
示例scheme:
首先,Java程序启动,它可以作为后台进程或作为窗口运行。 底线是它应该能够接受触发器,例如键盘快捷键或麦克风input来触发动作。 之后,假设Chrome窗口已打开并且当前处于活动状态。 现在按下预定义的快捷键,Chrome窗口将最小化/最大化或closures。
如果问题的答案是肯定的,我可以使用一些指针开始我的应用程序。 谢谢!
你需要的是一个OS shell编程接口。 在Java方面,你将定义一些接口。 另一个Java层将检测使用哪个操作系统,并将返回接口的实现:Windows,Linux,Macosx。
一些功能,你可以用简单的bash命令:在Windows CMD,在Linux ..到很多。 例如关闭,启动MSPaint,计算器。
其他功能,你可以与Windows API:你将需要编写一些JNI功能,并调用它。 例如最小化,最大化。 有可能的。
编辑:我看到没有被接受的答案,虽然它被正确地回答。 这是一个C#代码,它可以完成你在Java中所需要的功能。
现在,您需要将此代码迁移到Java:
在你的java类中声明一个函数:
private native maximizeOrMinimizeWindowWithName(String windowName, boolean maximize);
编译 – 使用Javah.exe – 它会生成必需的.h文件使用C编辑器,配置环境,使用生成的.h文件。
– 包括Windows API的头文件 – 加载user32.dll – 做更多的stuf ..
编译你的C代码到.dll
把your.dll放到你的app PATH环境变量中。 (windows有.in路径,linux没有)
文本,bugfix,
-upvote接受:)
这可以从Java 启动 ,但实际上并没有在Java中实现。 换句话说,它需要很多平台特定的JNI库代码才能运行。
Java将给你的用例几乎没有任何好处; 你应该完全避免这个项目。
你应该看看Autohotkey 。 这是一个致力于simulate user programmaticly
的系统。
使用AH脚本,您可以轻松访问所有打开的窗口,安装的程序,甚至控制鼠标和键盘。