如何修改运行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
相关产品推荐
相关产品推荐

