You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Golang的Fyne框架中隐藏任务栏?

在Go中隐藏Windows任务栏的实现方案

要在Go中实现隐藏Windows任务栏,需要调用Windows系统API来操作任务栏窗口。以下是具体实现步骤和代码:

核心原理

Windows任务栏对应的窗口类名为Shell_TrayWnd,我们可以通过user32.dll中的FindWindow函数获取该窗口的句柄,再调用ShowWindow函数传入隐藏参数来实现任务栏隐藏。

代码实现

package main

import (
    "syscall"
    "unsafe"
)

const (
    SW_HIDE = 0
    SW_SHOW = 5
)

var (
    user32         = syscall.NewLazyDLL("user32.dll")
    findWindow     = user32.NewProc("FindWindowW")
    showWindow     = user32.NewProc("ShowWindow")
)

func hideTaskbar() error {
    // 查找任务栏窗口,类名Shell_TrayWnd,窗口标题为空
    className, err := syscall.UTF16PtrFromString("Shell_TrayWnd")
    if err != nil {
        return err
    }
    hwnd, _, err := findWindow.Call(uintptr(unsafe.Pointer(className)), 0)
    if hwnd == 0 {
        return err
    }
    // 隐藏窗口
    _, _, err = showWindow.Call(hwnd, SW_HIDE)
    return err
}

func showTaskbar() error {
    className, err := syscall.UTF16PtrFromString("Shell_TrayWnd")
    if err != nil {
        return err
    }
    hwnd, _, err := findWindow.Call(uintptr(unsafe.Pointer(className)), 0)
    if hwnd == 0 {
        return err
    }
    _, _, err = showWindow.Call(hwnd, SW_SHOW)
    return err
}

func main() {
    // 调用隐藏任务栏函数
    if err := hideTaskbar(); err != nil {
        panic(err)
    }
    // 如果需要恢复显示,调用showTaskbar()
    // if err := showTaskbar(); err != nil {
    //     panic(err)
    // }
}

代码说明

  1. 导入syscall包用于调用Windows系统DLL,unsafe包用于类型转换
  2. 定义SW_HIDE和SW_SHOW常量,对应窗口隐藏和显示的参数
  3. 加载user32.dll并获取FindWindowW和ShowWindow函数的指针
  4. hideTaskbar函数:先通过类名找到任务栏窗口句柄,再调用ShowWindow传入SW_HIDE隐藏窗口
  5. showTaskbar函数:同理,传入SW_SHOW恢复任务栏显示

注意事项

  • 该代码仅适用于Windows系统,跨平台场景需要做系统判断
  • 部分特殊情况下(如任务栏被第三方工具修改)可能无法找到窗口,需根据实际情况调整类名
  • 运行程序时无需特殊权限,普通用户权限即可操作

内容的提问来源于stack exchange,提问作者merf merf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:22:13