Как скрыть чужое приложение в панели задач?

Мне надо скрыть приложение из панели задач на python. Причем приложение не написанное мной, а абсолютно любое.

import subprocess

def startProgramHidden():
    SW_HIDE = 0
    info = subprocess.STARTUPINFO()
    info.dwFlags = subprocess.STARTF_USESHOWWINDOW
    info.wShowWindow = SW_HIDE
    subprocess.Popen(r"D:\Program Files\CrystalDiskMark8\DiskMark64.exe", startupinfo=info)


startProgramHidden()

Ответы (2 шт):

Автор решения: rotabor

Любое приложение на Питоне - это хорошо, упрощает задачу. Нужно написать пусковое приложение, которое запускает интерпретатор Питона с нужной программой.

Решение для Windows (отредактированный скопилоченный код c# демонстрирует идею решения):

// pys.cs
// csc /t:winexe pys.cs
using System;
using System.Diagnostics;
using System.Windows.Forms;
namespace HiddenTaskbarApp {
  public class MainForm : Form {
    static string proga;
    public MainForm() {
      Text = "Hidden Taskbar Python Starter App";
      ShowInTaskbar = false; 
      WindowState = FormWindowState.Minimized;
      Load += MainForm_Load;
    }
    private void MainForm_Load(object sender, EventArgs e) {
      Hide();
      ProcessStartInfo startInfo = new ProcessStartInfo {
        FileName = "python.exe", Arguments = "\"" + proga + "\"",
        UseShellExecute = false, CreateNoWindow = true
      };
      using (Process process = new Process { StartInfo = startInfo }) {
        process.Start(); process.WaitForExit();
      }
      Close();
    }
    [STAThread]
    static void Main(string[] args){
      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);
      proga = args[0];
      Application.Run(new MainForm());
    }
  }
}

Имя программы задаётся в командной строке. В FileName = "python.exe" нужно добавить путь к интерпретатору.

Способ задания питон-программы можно изменить, например, использовать для этого текстовый файл.

Проверил, всё работает.

ОБНОВЛЕНИЕ

Если задача стоит наоборот - из Питоновского приложения срыто запустить другую задачу, то этот способ прекрасно подходит. Даже если для Питона для Windows нет такой библиотеки, то можно воспользоваться Windows API. Алгоритм и значения параметров - такие же.

→ Ссылка
Автор решения: rotabor

Есть ещё один вариант:

Файл "hiddenrun.js":

var wsc = new ActiveXObject("WScript.Shell");
wsc.Run('X:\\pathToPython\\Python\\Python310\\python.exe "X:\\pathToOrogram\\program.py"', 0, false);

Файл "hiddenrun.cmd":

wscript hiddenrun.js

Нужно запускать "hiddenrun.cmd".

ОБНОВЛЕНИЕ

Если нужно из Питона запускать, тогда...

import subprocess

def startProgramHidden():
    SW_HIDE = 0
    info = subprocess.STARTUPINFO()
    info.dwFlags = subprocess.STARTF_USESHOWWINDOW
    info.wShowWindow = SW_HIDE
    subprocess.Popen(r'C:\test.exe', startupinfo=info)

def startProgramMinimized():
    SW_MINIMIZE = 6
    info = subprocess.STARTUPINFO()
    info.dwFlags = subprocess.STARTF_USESHOWWINDOW
    info.wShowWindow = SW_MINIMIZE
    subprocess.Popen(r'C:\test.exe', startupinfo=info)
→ Ссылка