通过Java控制应用程序

提问

我正在寻找一种通过Java模仿操作系统(特定于Windows)操作的方法.最好该程序应在后台运行,但如果不是,则没什么大不了的.我感谢this问题覆盖了背景部分.我一直在寻找以下特定功能:

>最大化/最小化当前活动的窗口. (可以是任何窗口,而不仅仅是Java应用程序窗口.)
>关闭当前活动的窗口.
>打开已安装的程序,以及系统实用程序,例如计算器,绘画等.(我从this问题中得出了这一点.)
>关闭/重新启动(由于问题here,此操作也完成了.)

因此,我的实际问题是:

是否可以从Java程序最小化/最大化或关闭应用程序窗口? (在Windows中)

示例场景:

首先,启动Java程序,该程序可以作为后台进程运行,也可以作为窗口运行.底线是它应该能够接受触发,例如键盘快捷键或麦克风输入来触发操作.之后,假设打开了一个Chrome窗口,并且该窗口当前处于活动状态.现在,按下预定义的快捷方式后,Chrome窗口将最小化/最大化或关闭.

如果问题的答案是肯定的,那么我可以使用一些指针来启动我的应用程序.谢谢!

最佳答案

您所需要的就像是OS Shell编程接口.
在Java方面,您将定义一些接口.
另一个Java层将检测所使用的OS,并返回接口的实现:Windows,Linux,Macosx.

您可以使用简单的bash命令获得一些功能:在Windows cmd中,在Linux中.例如关闭,启动MSPaint,计算器.

Windows API可以提供的其他功能:您将需要编写一些JNI函数并调用它.例如最小化,最大化.有可能的.

编辑:
我看到没有正确的答案,但是没有可以接受的答案.
Here是C#代码,可以完成Java中所需的工作.

现在您需要将此代码迁移到Java:

在您的java类中声明一个函数:

private native maximizeOrMinimizeWindowWithName(String windowName, boolean maximize);

编译
使用Javah.exe-它将生成必要的.h文件
使用C编辑器,配置环境,使用生成的.h文件.

-包括Windows API标头
加载user32.dll
-做更多的东西.

将您的C代码编译为.dll

将your.dll放入您的应用PATH环境变量中. (Windows在路径中带有.,Linux没有)

-文字,错误修正,

>有关更多信息,您应该看到基本的JNI教程.

-upvote接受:)

评论