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
}
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)