Marc Kane Ответов: 2

Как правильно скрыть процесс?


Я использую эти пять строк кода для другого процесса, но каким-то образом он все еще не скрыт, или, скажем, все еще виден в окне. Вы знаете, какую строку кода я пропустил?

Что я уже пробовал:

Dim myprocess As Process = New Process()
myprocess.StartInfo.FileName = "SW.exe"
myprocess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
myprocess.StartInfo.UseShellExecute = True
myprocess.StartInfo.CreateNoWindow = True
myprocess.Start()
myprocess.WaitForExit()

2 Ответов

Рейтинг:
1

OriginalGriff

ProcessWindowStyle.Hidden не скрывает процесс - вы не можете этого сделать - он просто не отображает окно, фактически не рисуя его вообще.

Процесс не обязательно должен иметь окно, чтобы он мог быть "невидимым" на экране, но он должен иметь поток и пространство процесса, в котором его можно запустить, и они всегда будут отображаться в списке процессов Диспетчера задач.


Marc Kane

Да, я знаю об этом, но с этим кодом он виден, и я не хочу этого, поэтому я пытаюсь выяснить причину, по которой он все еще отображается

Рейтинг:
0

Alan N

В этом коде нет ничего плохого, но вполне возможно, что SW.exe игнорирует состояние запуска "запрос" от операционной системы. Например, графическое приложение windows, написанное с помощью системы.Окна.Формы.Форма и обработчик событий загрузки со следующим кодом будут игнорировать ProcessWindowStyles из процесса.Начало(...). Это всегда будет выглядеть нормально.

protected override void Form_Load(Object sender EventArgs e) {
  WindowState = FormWindowState.Normal;
}


Простой способ тестирования, если ваш SW.exe то, что будет вести себя так, как вы хотели бы, - это запустить его с помощью ярлыка. Измените свойства ярлыка и установите для параметра выполнить значение развернуть или свернуть. Если это не имеет никакого эффекта тогда SW.exe игнорирует ProcessWindowStyles.

Алан.