如何通过代码Windows10window隐藏任务栏的图标

How to hide by code Windows 10 window's icon on task bar

为了在使用 JavaFx 的 Java 应用程序中显示 OpenGL,我使用了一个位于应用程序透明区域后面的 GLFW window。这给人一种 OpenGL 视图是应用程序一部分的错觉。

在Windows10下,这个GLFWwindow在任务栏中是可见的并且是可选的,它短路了它被应用程序的奴役并使其失控:

我想可以通过代码(我正在考虑通过 JNI 在 C 中)在任务栏中隐藏这个 GLFW window(给出了 window 句柄)但我不是确保在 Windows OS.

的肠子里必须访问什么

如果有人对我需要记录的部分有任何想法或可以指导我。

查看管理任务栏按钮段落:https://docs.microsoft.com/en-us/windows/win32/shell/taskbar

这是我设法找到的解决方案,用于处理 c++ 中的类似问题。显然您需要访问 win32 api。这是你需要对你的 GLFWWindow* win 变量进行隐藏它的任务栏条目:

{   /* signal not appear on task bar */
    auto hwnd = glfwGetWin32Window(win);
    ShowWindow(hwnd, SW_HIDE);
    SetWindowLong(hwnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
    ShowWindow(hwnd, SW_SHOW);
}

SetWindowLong(hwnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW); 是做什么用的。该段还提到使用 window 所有权来隐藏 windows 的任务栏图标,这可能是您正在寻找的更多内容,但我没有研究过。您应该能够使用 JNI 调用正确的函数。所以你可以用这样的东西制作一个 dll(注意我不经常使用 java 所以以此为起点):

#define GLFW_EXPOSE_NATIVE_WIN32
#include <GLFW/glfw3.h>
#include <GLFW/glfw3native.h>

__declspec( dllexport ) void hide_taskbar_icon(GLFWWindow* win)
{
    glfwHideWindow(win);
    SetWindowLong(glfwGetWin32Window(win), GWL_EXSTYLE, WS_EX_TOOLWINDOW);
    glfwShowWindow(win);
}

这是我从身边得到的最好的祝你好运。