如何让计划的窗口创建程序不窃取焦点?

如何让计划的窗口创建程序不窃取焦点?

我编写了一个小型控制台程序,用于检查我的所有网站是否正常运行。我使用Microsoft Windows 任务计划程序每天自动运行一次该程序。

截屏

问题是,程序每次运行时都会很自然地窃取焦点。我希望它启动时不会成为桌面上的最顶层窗口。实现此目的的最简单方法是什么?当然,我可以重写 EXE 以创建背景窗口(或根本没有窗口),但如果任务计划程序有“不窃取焦点”之类的选项就好了,但也许这根本不可能......

答案1

您可以让任务计划程序运行一个打开控制台程序的 vbscript。vbscript 可以使用 Shell Run 方法将其最小化打开,如下所示:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "notepad.exe", 6, true

有关于此的一些基本信息http://ss64.com/vb/run.html

答案2

不要直接调用该应用程序。从最小化启动的快捷方式运行它。

我想您可以将批处理文件添加到混合中以实现/start /min相同的效果,但我怀疑批处理文件会窃取焦点,除非从最小化启动的快捷方式调用它。

编辑:确实start /min会短暂地窃取焦点,但它可以在我的计算机上工作,使用.cmd调用新命令行窗口的批处理文件(使用 cmd.exe)。

我的批处理文件如下所示:

@echo off
cls
start /min C:\Users\Randolph\Desktop\shortcut.lnk

快捷方式本身会打开cmd.exe并选择默认选项,但它会最小化打开(选项Run:设置为Minimized)。

答案3

此语法允许 start /min 想法发挥作用:
%comspec% /c start "" /min "C:\Scripts\Destination_inbound_ftp5.bat"

相关内容