通过将窗口发送到后台或将其从另一个窗口分离来“隐藏”窗口

通过将窗口发送到后台或将其从另一个窗口分离来“隐藏”窗口

我编译了一个小型 python 程序,它打开了这个窗口(cmd 控制台),我想将其设为后台任务或以某种方式向用户隐藏它。

是的,我知道我可以使用--windowed编译我的py文件,但是这是不可能的,因为它会导致其他问题。

我希望在 PowerShell 或 Python 中找到解决方案。任何建议或建议都很好。

不,我无法关闭它(它会关闭我想要打开的应用程序)

有问题的两个窗口:

答案1

最简单的两个选项是 PowerShell 和 Windows Scripting Host。
如果您想要 Windows Scripting Host 版本,请询问。

Powershell:
您使用Start-Process带有标志的 cmdlet -WindowStyle hidden

例如:
Start-Process -WindowStyle hidden -FilePath python.exe -ArgumentList "c:\my_py_path\my_py_file.py"

请记住,您没有可以关闭的窗口。要关闭,您必须终止任务。

答案2

我对 Python 一无所知,看不懂你链接的图片,但是电源外壳可以隐藏任何你可以获得句柄的窗口,如果你使用Add-Type调用显示窗口()功能:

Add-Type @'
using System;
using System.Runtime.InteropServices;

public class API {

    public enum SW : int {
        Hide            = 0,
        Normal          = 1,
        ShowMinimized   = 2,
        Maximize        = 3,
        ShowNoActivate  = 4,
        Show            = 5,
        Minimize        = 6,
        ShowMinNoActive = 7,
        ShowNA          = 8,
        Restore         = 9,
        Showdefault     = 10,
        Forceminimize   = 11
    }

    [DllImport("user32.dll")]
    public static extern int ShowWindow(IntPtr hwnd, SW nCmdShow);
}
'@

复制、粘贴并执行上述代码电源外壳窗口(或脚本),然后窗口可以隐藏和显示自己,如下所示:

$ThisWindow = [System.Diagnostics.Process]::GetCurrentProcess().MainwindowHandle
[API]::ShowWindow($ThisWindow,'Hide')
sleep -Seconds 5
[API]::ShowWindow($ThisWindow,'Show')

其他顶层窗口的句柄可以通过Get-Process或调用FindWindow()函数获得。

相关内容