gpt4 book ai didi

java - jna getDesktop bringWindowToTop

转载 作者:搜寻专家 更新时间:2023-11-01 02:15:05 28 4
gpt4 key购买 nike

我在激活桌面窗口时遇到问题。

我采取了以下方法

1: GetDesktopWindow 获取桌面句柄(有效)我尝试了以下方法将桌面窗口置于顶部,但它们没有用。

   SetForegroundWindow 
SwitchToThisWindow
ShowWindow
BringWindowToTop

我做错了什么吗?或者无法使用 jna 显示桌面?

最佳答案

一种方法是获取任务栏的句柄并向其发送一条消息以隐藏所有窗口,也许像这样的方法在 Windows 7 上对我有用:

import com.sun.jna.Native;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.win32.W32APIOptions;

public class ToggleDesktop3 {
public interface User32 extends W32APIOptions {
public static final String SHELL_TRAY_WND = "Shell_TrayWnd";
public static final int WM_COMMAND = 0x111;
public static final int MIN_ALL = 0x1a3;
public static final int MIN_ALL_UNDO = 0x1a0;

User32 instance = (User32) Native.loadLibrary("user32", User32.class,
DEFAULT_OPTIONS);

HWND FindWindow(String winClass, String title);

long SendMessageA(HWND hWnd, int msg, int num1, int num2);
}

public static void main(String[] args) {
// get the taskbar's window handle
HWND shellTrayHwnd = User32.instance.FindWindow(User32.SHELL_TRAY_WND,
null);

// use it to minimize all windows
User32.instance.SendMessageA(shellTrayHwnd, User32.WM_COMMAND,
User32.MIN_ALL, 0);

// sleep for 3 seconds
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}

// then restore previously minimized windows
User32.instance.SendMessageA(shellTrayHwnd, User32.WM_COMMAND,
User32.MIN_ALL_UNDO, 0);
}
}

看起来还有另一种方法可以通过 Shell32 库调用(涉及 ToggleDesktop 函数的东西——对于 C# 版本,查看这个 SO link ),但我还没有让它工作。

关于java - jna getDesktop bringWindowToTop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7697395/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com