Puede usar este script de PowerShell:
$query = New-Object System.Management.WqlEventQuery ("__InstanceCreationEvent", (New-Object TimeSpan (0, 0, 1)), 'TargetInstance isa "Win32_Process"')
$watcher = New-Object System.Management.ManagementEventWatcher
$watcher.Query = $query
$watcher.Options.Timeout = [System.Management.ManagementOptions]::InfiniteTimeout
$curProc = $null
While ($true) {
$e = $watcher.WaitForNextEvent().TargetInstance
If ($e.Name -eq 'firefox.exe' -and ($curProc -eq $null -or $curProc.ExitTime -ne $null)) {
$curProc = Start-Process 'cmd' -Argument '/c C:\path\to\script.bat' -PassThru -WindowStyle Hidden
}
}
Utiliza WMI para observar la creación de nuevos procesos, y si el proceso pertenece firefox.exe
, inicia un símbolo del sistema oculto (a menos que ya se esté ejecutando desde un inicio anterior de Firefox).
Si desea que se inicie una nueva ejecución del archivo por lotes cada vez que se inicia Firefox, use este script más simple:
$query = New-Object System.Management.WqlEventQuery ("__InstanceCreationEvent", (New-Object TimeSpan (0, 0, 1)), 'TargetInstance isa "Win32_Process"')
$watcher = New-Object System.Management.ManagementEventWatcher
$watcher.Query = $query
$watcher.Options.Timeout = [System.Management.ManagementOptions]::InfiniteTimeout
While ($true) {
$e = $watcher.WaitForNextEvent().TargetInstance
If ($e.Name -eq 'firefox.exe' ) {
Start-Process 'cmd' -Argument '/c C:\path\to\script.bat' -WindowStyle Hidden
}
}
Si no desea que la ventana de solicitud esté completamente oculta, simplemente cambie -WindowStyle Hidden
a -WindowStyle Minimized
.
Guarde el script de PowerShell seleccionado como un .ps1
archivo. Para iniciarlo en su inicio de sesión, coloque un archivo por lotes que lo contenga en su carpeta de inicio:
powershell -file 'C:\path\to\powershellScript.ps1' -executionpolicy bypass -windowstyle Hidden