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

如何修改运行Python脚本的任务栏控制台(cmd)图标

修改Python脚本运行控制台(CMD)图标的解决方案

问题核心

你要修改的是Python脚本启动的CMD窗口图标(而非快捷方式图标),但常规方法获取的是PseudoConsoleWindow虚拟窗口的句柄,而非真实控制台窗口,导致图标设置操作失效。

解决步骤

1. 用spyxx.exe定位真实控制台窗口

打开spyxx.exe(Windows SDK自带工具),使用「查找窗口」功能,拖动瞄准器到目标CMD窗口上,确认真实窗口的类名(通常为ConsoleWindowClass)和句柄。PseudoConsoleWindow是虚拟层窗口,无法直接设置图标,必须定位到真实的ConsoleWindowClass窗口。

2. 调整窗口句柄获取逻辑

常规通过进程ID找窗口的方法会优先捕获PseudoConsoleWindow,需要遍历所有窗口,筛选出关联当前Python进程且类名为ConsoleWindowClass的句柄:

import win32gui
import win32process
import os

def get_real_console_handle():
    current_pid = os.getpid()
    matches = []
    def enum_windows_callback(hwnd, extra):
        _, window_pid = win32process.GetWindowThreadProcessId(hwnd)
        if window_pid == current_pid and win32gui.GetClassName(hwnd) == "ConsoleWindowClass":
            extra.append(hwnd)
        return True
    win32gui.EnumWindows(enum_windows_callback, matches)
    return matches[0] if matches else None

# 设置图标
console_hwnd = get_real_console_handle()
if console_hwnd:
    # 替换为你的ico格式图标路径
    icon_path = "custom_icon.ico"
    icon_handle = win32gui.LoadImage(0, icon_path, 1, 0, 0, 0x00000010)
    win32gui.SendMessage(console_hwnd, 0x0080, 0, icon_handle)

3. 关键注意事项

  • 必须使用.ico格式的图标文件,其他格式无法被控制台识别。
  • 确保脚本通过python.exe启动(而非pythonw.exe,后者无控制台窗口)。
  • 部分Python环境(如Anaconda)的控制台窗口类名可能略有差异,需再次用spyxx.exe确认。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:39:53