3

我正在寻找一种通过 Java 模拟操作系统(特定于 Windows)操作的方法。最好,程序应该在后台运行,但如果不这样做也没什么大不了的。由于这个问题,我得到了背景部分。我正在寻找以下特定功能:

  • 最大化/最小化当前活动窗口。(可以是任何窗口,而不仅仅是 Java 应用程序窗口。)
  • 关闭当前活动的窗口。
  • 打开已安装的程序和系统实用程序,如计算器、油漆等。(我从这个问题中找到了这个。)
  • 关机/重启(这个也完成了,感谢这里的问题。)

所以,我的实际问题是:

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

示例场景:

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

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

4

3 回答 3

2

你需要的是一个 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 文件。

-include windows api headers -load user32.dll - do more stuf..

将您的 C 代码编译为 .dll

将 your.dll 放入您的应用程序 PATH 环境变量中。(windows有.in路径,linux没有)

-文本,错误修正,

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

-upvote接受:)

于 2013-07-08T15:41:02.857 回答
2

这可以从 Java启动,但实际上并未在 Java 中实现。换句话说,它需要大量特定于平台的 JNI 库代码才能使其工作。

Java 几乎不会为您的用例带来任何好处;对于这个项目,你应该完全避免它。

于 2013-07-08T15:41:45.053 回答
0

你应该看看Autohotkey。这是一个专用于simulate user programmaticly.

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

于 2013-07-09T11:31:45.253 回答