阻止 taskeng.exe 窗口弹出

阻止 taskeng.exe 窗口弹出

我在 Windows 7 环境中安排了几个进程,主要用于备份,这些进程应该在后台运行。

然而,任务调度程序并没有在后台安静地工作,而是弹出一个黑色的(类似控制台的)“taskeng.exe”窗口。该窗口位于所有其他窗口的前面。幸运的是,它不会窃取我的键盘焦点,但它会遮挡所有东西的视线。

任务管理器

有没有办法避免出现这个窗口——或者至少让它出现在背景中而不会夺走我的视觉焦点?

赏金申请后编辑的示例:

这是我最后一次尝试使用 WScript 内容(在名为 RunSignatured.bat 的文件中):

Set Shell = CreateObject("WScript.Shell")
Shell.Run C:\Users\danh\Bin\signatured.bat, 0, False

signatured.bat 文件包含:

cd C:\Users\danh\bin
"C:\Program Files\Java\jre7\bin\java.exe" Signature

答案1

更具体地说是 Daniel R Hicks 的赏金/例子,但我认为它仍然可以应用于原始问题:

如果它是从任务计划程序启动的批处理文件,那么您可能还需要修改批处理文件本身以不可见的方式运行其命令,而不仅仅是启动最小化/不可见的批处理文件。

因此改变:

cd C:\Users\danh\bin
"C:\Program Files\Java\jre7\bin\java.exe" Signature

类似于:

cd C:\Users\danh\bin
start /b "C:\Program Files\Java\jre7\bin\java.exe" Signature

或者可能完全消除批处理文件并只执行直接从任务计划程序启动的(VBS)脚本的所有操作。

就像是:

Set Shell = CreateObject("WScript.Shell")
Shell.CurrentDirectory = "C:\Users\danh\bin" 
Shell.Run "C:\Program Files\Java\jre7\bin\java.exe Signature", 0, False

解决方案由 DanH 实施,响应 techie007 的建议,满足赏金:

一个名为 RunSignatured.vbs 的文件,包含:

Set Shell = CreateObject("WScript.Shell")
Shell.CurrentDirectory = "C:\Users\danh\bin" 
Shell.Run "java.exe Signature", 0, False

请注意,上述操作依赖于 java.exe 位于路径中,因为在指定完整路径时,该技术不适用于 Program Files 中的空白。毫无疑问,还有其他方法可以解决这个问题,但这取决于其他人的发现。

然后RunSignature.vbs在任务计划程序的“操作”中添加“程序/脚本”名称。

答案2

您可以以其他用户的身份运行计划任务,这样它们就根本不会与您的普通帐户的交互式桌面进行交互。这似乎在我管理的 Windows2003 服务器上确实有效。只需小心确保设置了文件权限和其他身份验证详细信息,以便任务在以其他用户身份运行时可以访问它们需要的内容。

编辑:或者,您也可以不直接运行控制台工具,而使用一个小脚本,使用 WScript.Shell.Run 和“最小化,不改变焦点”选项来运行它:

' sample script: c:\scripts\test.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "c:\location\of\tool\utility.exe", 7

然后使用任务调度程序(命令行类似于wscript c:\scripts\test.vbs)运行此程序,而不是直接调用该工具。您也可以通过这种方式调用批处理文件和其他脚本。还有一个“完全隐藏”选项(将上面的 7 替换为 0),但无论哪种情况,隐藏/最小化都只控制初始窗口:如果该工具自己打开更多窗口,那么它们可能仍会像以前一样窃取焦点。

http://msdn.microsoft.com/en-us/library/d5fk67ky%28VS.85%29.aspx了解运行方法的完整选项列表。

答案3

尝试像这样运行您的计划任务:

C:\Windows\System32\cmd.exe /c start /bc:\fullpath\mybackup.bat

应该start /b启动应用程序而不创建新窗口。

如果这不起作用,那么你可以创建一个独立的自动识别隐藏 taskeng.exe 窗口的脚本。AutoIt 脚本可以编译为 .exe。

.exe 将是 mybackup.bat 文件中的第一行。AutoIt 代码如下所示:

WinSetState("taskeng", @SW_HIDE)

答案4

尝试4trayMinimizer。您可以定义默认隐藏的应用程序。

相关内容