通过Java控制应用程序

时间:2013-07-08 15:35:33

标签: java windows

我正在寻找一种通过Java模仿操作系统(特定于Windows)操作的方法。优选地,程序应该在后台运行,但如果不是,则不是很重要。由于 this 问题,我得到了背景部分。我一直在寻找以下特定功能:

  • 最大化/最小化当前活动窗口。 (可以是任何窗口,而不仅仅是Java应用程序窗口。)
  • 关闭当前活动的窗口。
  • 打开已安装的程序,以及计算器,绘画等系统实用程序(我在 this 问题中找到了这个。)
  • 关闭/重启(由于问题 here ,此问题也已完成。)

所以,我的实际问题是:

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

示例场景:

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

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

3 个答案:

答案 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,

  • 有关详细信息,您应该看到基本的JNI教程。

-upvote accept :)

答案 1 :(得分:2)

这可以从Java 启动,但实际上不是用Java实现的。换句话说,它将需要许多平台特定的JNI库代码才能使其正常工作。

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

答案 2 :(得分:0)

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

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