Windows:如何在其他应用程序完成时启动它

Windows:如何在其他应用程序完成时启动它

我想自动启动一个应用程序,当其他应用程序完成时总是如此。这可以实现吗?

我的具体情况是:用户连接到远程桌面,然后必须出现一些带有特定页面的 Iexplorer 窗口。

到目前为止,我找到了使用以下方法的解决方案start /wait

start /wait prog1.exe
start /wait prog2.exe

但这个解决方案还不够好,因为第一个程序必须始终通过 cmd 脚本打开。

我尝试使用任务计划程序执行此任务,但不幸的是,我找不到能够满足我需要的适当中断或活动。

感谢您的任何帮助。

答案1

您已完成 90% 的解决方案。如果连接方法是通过 RDP,则可以在用户登录时启动程序。将“启动”命令放入 .BAT/.CMD 文件中,然后通过 RDP 的“高级”选项卡将其作为用户登录的一部分调用。

答案2

如果 PowerShell 是一个选项,您可以使用任务计划程序在隐藏的 PowerShell 窗口中启动此脚本。

这将监视mstsc.exe进程的启动,然后notepad.exe在每个mstsc.exe进程退出时打开。

# The action to be performed for every new process event.
$action = {
    $target = $EventArgs.NewEvent.TargetInstance
    if($target.Name -eq 'mstsc.exe') {
        # Run action as a job in order to handle multiple new calc.exe
        # processes. Otherwise, the script will be blocked waiting for
        # the first calc.exe to exit.
        $jobScript = {
                param($ProcessId) 
                (Get-Process -Id $ProcessID).WaitForExit()
                notepad.exe
            }
        Start-Job -ScriptBlock $jobScript -ArgumentList $target.ProcessId
    }
}

$query = @"
Select * From __InstanceCreationEvent within 3
Where TargetInstance ISA 'Win32_Process'
"@

Register-WMIEvent -query $query -Action $action -sourceIdentifier "New Process" 

相关内容