Power shell monitoramento de app e execução caso esteja fechado

23/01/2024

0

Oi, estou fazendo um processo em uma RDP e nela eu quero que um app seja monitorado a cada 5 minutos... e caso ele já esteja aberto não faça nada, mas caso não esteja aberto então abra o executável. Peguei algumas ideias e fiz em power shell junto com o agendador de tarefas, assim a cada 5 min o agendador irá chamar o power shell e o power shell fará todo o resto, porém parece que ele não identifica mto bem quando está aberto o app (talvez porque ele fica "oculto" ele apenas aparece nos ícones ocultos) e por causa disso ele tenta abrir sendo que já esta aberto daí gera uma mensagem meio chata... aqui está o código do power shell, queria uma ajuda ou até novas ideias, mas é só isso que falta para o processo.


Set-ExecutionPolicy Unrestricted

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

public class User32 {
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
}
"@

# Obtém o identificador da janela atual do PowerShell
$hWnd = (Get-Process -Id $PID).MainWindowHandle

# Define o código de comando para minimizar a janela (SW_MINIMIZE)
$SW_MINIMIZE = 6

# Chama a função ShowWindow para minimizar a janela
[User32]::ShowWindow($hWnd, $SW_MINIMIZE)

# Monitor de Atividades
$exeName = "C:\Program Files\PIX\Agent.exe"

# Loop infinito
while ($true) {
# Verifica se o processo está em execução
if (-not (Get-Process -name $exeName -ErrorAction SilentlyContinue)) {
# Se não estiver em execução, inicia o processo
Start-Process /min -FilePath $exeName -ErrorAction SilentlyContinue
}

# Aguarda 5 minutos
Start-Sleep -Seconds 300
}
Mateus Silva

Mateus Silva

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar