首页 > 解决方案 > JNA 查找窗口,但未将其最小化

问题描述

我正在尝试使用 JNA 操作 Java 上的外部窗口。我想找到一个特定的窗口,然后将其最小化。我尝试过的每个窗口都运行良好,但只有一个(显然是我需要的)。可以找到那个并将其设置为前台,但不能以编程方式最小化。我也尝试使用 User32.INSTANCE.MoveWindow 移动它,但该命令也失败了。我想知道是否有不允许 JNA 窗口操作的应用程序。如果是这样,我该怎么办?我的代码如下所示。

    HWND test = User32.INSTANCE.FindWindow(null,"windowname");
    User32.INSTANCE.SetForegroundWindow(test);
    User32.INSTANCE.ShowWindow(test, WinUser.SW_MINIMIZE);

标签: javawinapiwindowjna

解决方案


来自ShowWindow 的 API

nCmdShow

类型:整数

控制窗口的显示方式。如果启动应用程序的程序提供 STARTUPINFO 结构,则应用程序第一次调用 ShowWindow 时忽略此参数。否则,第一次调用 ShowWindow 时,该值应该是 WinMain 函数在其 nCmdShow 参数中获取的值。在后续调用中,此参数可以是以下值之一。

如果您再次调用它,您的最小化命令似乎会起作用。


推荐阅读