如何在systray中显示/隐藏windows控制台



我正在完成一个python程序,该程序将作为exe分发。我在Windows 10 64b上使用Python 3.7。

用户将双击exe来运行我的程序。然后打开一个windows控制台并在此控制台中显示日志。

我的程序不需要任何gui,但我想让用户有可能用日志隐藏控制台,并随时从systray中的图标中显示出来。

我在这里找到了各种各样的答案,但没有一个能满足我的需求。

我想我不是那个想在我们的python脚本上有这个选项的人。这可能非常有用。

我发现了一个在python中构建systray图标的教程:

https://youtu.be/WM27fMo5Gg8

但这是关于打开windows程序,而不是显示/隐藏自己的控制台。

经过进一步调查,我找到了解决方案。当我在终端中运行脚本时,它就起作用了。我仍然没有用我的程序的exe进行测试。如果.exe文件需要一些额外的信息,我可能会回到这里编辑我的答案。

  1. 我为python 2找到了这个著名的脚本SystrayIcon.py,它可以帮助我快速创建带有菜单的图标
  2. 我在这里找到了这个脚本的Python 3版本
  3. 然后,我使用类型中的GetConsoleWindow和win32gui中的ShowWindow来隐藏和显示控制台。

    def-show(sysTrayIcon(:

    the_program_to_hide = ctypes.windll.kernel32.GetConsoleWindow()
    win32gui.ShowWindow(the_program_to_hide, win32con.SW_SHOW)
    

    def-hide(sysTrayIcon(:

    the_program_to_hide = ctypes.windll.kernel32.GetConsoleWindow()
    win32gui.ShowWindow(the_program_to_hide, win32con.SW_HIDE)
    

这两个功能连接到我的systray图标的菜单。

我希望有一天它能帮助到别人。

附言:StackOverflow编辑器错误,我无法正确显示这两个函数的代码。

最新更新