18

В моей среде Windows 7 запланировано несколько процессов, в основном для резервного копирования, которые должны выполняться в фоновом режиме.

Однако вместо того, чтобы просто спокойно работать в фоновом режиме, планировщик задач открывает черное (как консоль) окно «taskeng.exe». Окно выходит перед всеми остальными окнами. К счастью, это не крадет фокус клавиатуры, но блокирует обзор всего.

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

8 ответов8

8

Точнее, для примера / награды Дэниела Р. Хикса, но я думаю, что он все еще может быть применен к исходной проблеме:

Если это пакетный файл, запускаемый из планировщика задач, то вместо простого запуска минимизированного / невидимого пакетного файла вам, вероятно, также необходимо изменить сам пакетный файл, чтобы выполнять его команды незаметно.

Так что поменяйте:

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 качестве имени «программы / скрипта» в "Действие" в планировщике задач.

4

Вы можете запускать запланированные задачи от имени другого пользователя, чтобы они вообще не взаимодействовали с интерактивным рабочим столом вашей обычной учетной записи. Это, безусловно, работает на серверах Windows2003, которые я администрирую. Просто будьте осторожны, чтобы убедиться, что права доступа к файлам и другие данные аутентификации установлены так, чтобы задачи могли получить доступ к тому, что им нужно, когда вы являетесь другим пользователем.

Редактирование: или вместо непосредственного запуска консольного инструмента вы можете создать небольшой скрипт, который запускает его с помощью WScript.Ракушка.Запустите с опцией «свернуть, без изменения фокуса»:

' 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 для получения полного списка опций для метода run.

3

Попробуйте запустить запланированное задание так:

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

start /b должен запустить приложение без создания нового окна.

Если это не работает, то вы можете создать автономный скрипт AutoIt, который будет скрывать окно taskeng.exe. Скрипты AutoIt могут быть скомпилированы в .exe.

.Exe будет первой строкой в вашем файле mybackup.bat. Код AutoIt будет выглядеть так:

WinSetState("taskeng", @SW_HIDE)
2

Попробуйте 4trayMinimizer. Вы можете определить приложения, которые скрыты по умолчанию.

2

Самый простой способ скрыть приложение, запущенное из планировщика заданий, - установить для него значение «Запускать независимо от того, вошел пользователь в систему или нет». Этот параметр можно найти на вкладке "Общие" в свойствах запланированных задач.

1

Вот скрипт SyncToy, который я использую. Обратите внимание на несколько кавычек вокруг расположения файла:

' SyncToy Scheduler
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """C:\Program Files\SyncToy 2.1\SyncToyCmd.exe"" -R" ,7
0

у меня возникла точная проблема с использованием SQLyog после некоторого исследования, я исправил его, создав файл invisible.vbs и вставив этот код:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.CurrentDirectory = "C:\Program Files (x86)\SQLyog\"
WshShell.Run "SJA.exe C:\Users\REPLACE_UR_USER\Desktop\test.xml -lC:\Users\REPLACE_UR_USER\AppData\Roaming\SQLyog\sja.log -sC:\Users\REPLACE_UR_USER\AppData\Roaming\SQLyog\sjasession.xml ", 0

Чем создать планировщик заданий для запуска файла invisible.vbs и все!

0

Видимо, вы установили SQLyog MySQL GUI, который запланировал выполнение агента заданий SQLyog. Похоже, что это консольное приложение, которое не пытается скрыть себя.

Вы должны найти в планировщике заданий задачу, ссылающуюся на SQLyog, и исправить ее запись. Если это вызов cmd, попробуйте добавить /b в список параметров. Если это просто вызов исполняемого файла, вы можете исправить это с учетом моего ответа.

Если у вас возникли проблемы с поиском этой записи, используйте автозапуск, чтобы узнать, как запускается SQLyog. Вы также можете использовать regedit для поиска всех упоминаний SQLyog или любого другого имени его установочного каталога.

Конечно, вы также можете удалить SQLyog MySQL GUI, если вам это не нужно.

Если вы не установили SQLyog MySQL GUI, возможно, ваш компьютер заражен. Вы можете использовать Process Monitor, чтобы проверить, когда появляется всплывающее окно, чтобы увидеть, является ли это taskeng.exe из system32 или один из похожих на Taskeng.exe.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .