通过Java控制应用程序

我正在寻找一种通过Java来模拟操作系统(特定于Windows)操作的方法。 最好,程序应该在后台运行,但如果不是这样的话,这并不重要。 感谢这个问题,我得到了背景部分。 我正在寻找以下具体function:

  • 最大化/最小化当前活动的窗口。 (可以是任何窗口,而不仅仅是Java应用程序窗口。)
  • closures当前活动的窗口。
  • 打开已安装的程序,以及计算器,绘画等系统工具(我从这个问题中找出了这个问题)。
  • 关机/重新启动(这个也完成了,感谢这里的问题。)

所以,我的实际问题是:

是否有可能从Java程序最小化/最大化closures应用程序窗口? (在Windows中

示例scheme:

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

如果问题的答案是肯定的,我可以使用一些指针开始我的应用程序。 谢谢!

Solutions Collecting From Web of "通过Java控制应用程序"

你需要的是一个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,

  • 有关更多信息,您应该看到一个基本的JNI教程。

-upvote接受:)

这可以从Java 启动 ,但实际上并没有在Java中实现。 换句话说,它需要很多平台特定的JNI库代码才能运行。

Java将给你的用例几乎没有任何好处; 你应该完全避免这个项目。

你应该看看Autohotkey 。 这是一个致力于simulate user programmaticly的系统。

使用AH脚本,您可以轻松访问所有打开的窗口,安装的程序,甚至控制鼠标和键盘。