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