从屏幕保护程序中创建进程

CreateProcess from within Screen Saver

我需要从我的屏幕保护程序中启动“explorer.exe”,但无论我尝试什么,它都不会在我的屏幕保护程序关闭时保持打开状态。

CreateProcess(nil, 'explorer.exe /select,"' + fileName + '"', nil, nil, false, 0, nil, '', StartupInfo, ProcessInfo)

我尝试了多种标志和参数的组合,但没有成功:) Explorer 短暂启动并随我的屏保应用程序关闭...

here 中有一个解决方案,但它需要 windows 服务,这对于简单的屏幕保护程序来说太多了...

有人知道吗?

谢谢!

回答我自己, 我用当前登录的用户创建了一个 Windows 任务,在 ss 关闭后 2 秒内启动。而且效果很好。

创建任务的命令如下:

powershell -command "& {Register-ScheduledTask -Action $(New-ScheduledTaskAction -Execute "explorer.exe" -Argument '/select,"d:/test/txt" ') -Trigger $(New-ScheduledTaskTrigger -Once -At (Get-Date).AddSeconds(2)) -TaskName "MyTask" -TaskPath "MyTasks" -Principal $(New-ScheduledTaskPrincipal -UserId $(Get-CimInstance –ClassName Win32_ComputerSystem | Select-Object -expand UserName))}"

并且不要忘记在创建新任务之前删除任务 - 否则创建会失败

powershell -command "& {Unregister-ScheduledTask -TaskName "MyTask" -Confirm:$false}"