Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)

Аватара пользователя
CyraxZ

Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)

Сообщение CyraxZ »

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

Для некоторых программ (например, Notepad++) нужно реализовать перевод фокуса на эту программу.



Вот в
этой статье
описывается способ с командой start применительно к Windows 7:

В качестве примера приводится команда: /c start /d "C:\Windows\System32\" cmd.exe

Не понятно, что за "" здесь указывается перед командой start ?



Проблема 1. notepad++ невозможно нормально прописать в качестве программы по умолчанию для текстовых файлов и логов:

1) Настройки ассоциаций в параметрах самой программы никакого эффекта не приносят

2) В списке программ "Приложения по умолчанию - Задать значения по умолчанию по приложению" программы "notepad++" нет и добавить её в этот список невозможно (нет соответствующий кнопок)



3) Единственный вариант - добавлять "notepad++" для каждого расширения конкретно ("Выбор стандартных приложений для типов файлов"). Так и сделал - для .txt и .log. Но при этом имеем:

- при запуске текстового файла из Far Manager, проводника или ярлыком notepad++ нормально запускается

- но при запуске текстового файла через задачу планировщика (в качестве действия указывается путь к текстовому файлу) открывается окно "Каким образом вы хотите открыть этот файл ?" с выделенным пунктом "notepad++". А ведь запуск через планировщик как раз нужен для реализации запуска с правами администратора без подтверждения.



Проблема 2. Для того, чтобы запустить текстовый файл с помощью "notepad++" с правами администратора без подтверждения, приходится в планировщике явно указывать программу для запуска (галка "Запускать с наивысшими правами" устанавливается):



Код:

Код: Выделить всё

"C:\Program Files\Notepad++\notepad++.exe" "F:\...\error.log"

А для того, чтобы обеспечить перевод фокуса на "notepad++[/i]" (согласно вышеприведённой статье), в качестве действия прописывается ("start" - идёт в "Программа или сценарий", остальное - в аргументы):



Код:

Код: Выделить всё

start /d "C:\Program Files\Notepad++\" "notepad++.exe" "F:\...\error.log"

В этом случае при запуске задачи (через ярлык) на мгновение что-то открывается и тут же исчезает. Даже не понятно, что открывается "notepad++[/i]", какое-то сообщение, или cmd.exe. Если эту команду выполнить из Far Manager (запускается с правами администратора), то "notepad++" нормально открывается и получает фокус. Если выполнить эту команду из cmd.exe, то вылезает сообщение о неизвестной команде "start".



Итого. Нужно либо:

а) заставить Windows 10 средствами планировщика (когда в качестве действия указывается путь к текстовому файлу) сразу запускать notepad++ без окна "Каким образом вы хотите открыть этот файл ?"

б) "Научить" планировщик выполнять команду:

Код:

Код: Выделить всё

start /d "C:\Program Files\Notepad++\" "notepad++.exe" "F:\...\error.log"
Аватара пользователя
x0r

Re: Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)

Сообщение x0r »

Цитата CyraxZ:



Программы, которые необходимо ... апускать с правами администратора ... которые размещаются в автозагрузке, запускаю ярлыком через планировщик.
Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)




А почему просто не перенести ключи в реестре из

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run (или где там оно еще себя пишет. обычно тут, но есть еще парочка мест)

в

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

---

Свойства notepad.exe - Совместимость - Изменить для всех - Запускать от Админа(галочку жмакнуть) - и настроить ассоциации у него на *.log, *.txt Т.к. он будет от Админа, то будет доступ в кусты реестра для записи.

----

для запуска оконных приложений (GUI) через start указывай пустое имя_окна



Код:

Код: Выделить всё

start "" /d "C:\Program Files\Notepad++\" "notepad++.exe" "F:\...\error.log"

хз. десятки нету.
Аватара пользователя
Iska

Re: Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)

Сообщение Iska »

Цитата CyraxZ:



В качестве примера приводится команда: /c start /d "C:\Windows\System32\" cmd.exe

Не понятно, что за "/с" здесь указывается перед командой start ?
Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)




1. Приводится приложение «cmd.exe», а то, что указали Вы — это аргументы, которые ему передаются. Именно так написано в статье, и именно так оно и есть.

2. «/c» — это параметр интерпретатора команд cmd.exe, означающий «выполнить команду, идущую за данным параметром и завершить работу приложения». Почему именно интерпретатор команд? Потому что start — внутренняя команда интерпретатора, а не внешняя утилита в виде исполняемого файла.




Цитата CyraxZ:



Проблема 1. notepad++ невозможно нормально прописать в качестве программы по умолчанию для текстовых файлов и логов:

1) Настройки ассоциаций в параметрах самой программы никакого эффекта не приносят
Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)




Первый вариант, насколько я читал здесь, в новых ОС более не работает.
Аватара пользователя
Iska

Re: Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)

Сообщение Iska »

Iska, Без конкретики, но, при запуске, получить хендл окна по заголовку и отдать ему фокус, Не?
Аватара пользователя
yurfed

Re: Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)

Сообщение yurfed »

Цитата CyraxZ:



2) В списке программ "Приложения по умолчанию - Задать значения по умолчанию по приложению" программы "notepad++" нет и добавить её в этот список невозможно (нет соответствующий кнопок)
Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)




Видимо, портативная. Используйте установщик, и будет вам счастье

Изображение
Аватара пользователя
Vadikan

Re: Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)

Сообщение Vadikan »

Цитата:



1. Приводится приложение «cmd.exe», а то, что указали Вы — это аргументы, которые ему передаются.



Под "Приводится приложение «cmd.exe»" вы и автор статьи имеете ввиду "Пример запуска командной строки "cmd.exe" с передачей фокуса окну cmd.exe" ?




Цитата:



Почему именно интерпретатор команд? Потому что start — внутренняя команда интерпретатора, а не внешняя утилита в виде исполняемого файла.



Т.е. вызывается cmd.exe, который выполняет внутреннюю команду start, которая, в свою очередь, запускает целевое приложение (в качестве примера которого выступает этот же самый cmd.exe) ?



Код:

Код: Выделить всё

cmd.exe /c start /d "C:\Windows\System32\" cmd.exe

?
Аватара пользователя
CyraxZ

Re: Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)

Сообщение CyraxZ »

Цитата:



Видимо, портативная. Используйте установщик, и будет вам счастье



Как раз использую установщик. Скачивается
отсюда
:

npp.7.4.2.Installer.x64.exe



В начале установки там имеется галка, отвечающая за портативную версию - она снята. После установки имеем:

1) В "Пуск - Недавно установленные программы" отсутствует

2) В "Параметры - Приложения и возможности" в списке установленных приложений присутствует (Notepad++ 64-bit x64 7.4.2)

3) В "Приложения по умолчанию - Задать значения по умолчанию по приложению" в списке программ программы "notepad++" нет



Ещё раз переустановил (удалил и установил). Поведение абсолютно то же самое:

1) при запуске текстового файла из Far Manager, проводника или ярлыком notepad++ нормально запускается

2) при запуске текстового файла через задачу планировщика (в качестве действия указывается путь к текстовому файлу) открывается окно "Каким образом вы хотите открыть этот файл ?" с выделенным пунктом "notepad++"
Аватара пользователя
CyraxZ

Re: Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)

Сообщение CyraxZ »

Цитата CyraxZ:



Т.е. вызывается cmd.exe, который выполняет внутреннюю команду start, которая, в свою очередь, запускает целевое приложение (в качестве примера которого выступает этот же самый cmd.exe) ?

Код: Выделить весь код

cmd.exe /c start /d "C:\Windows\System32\" cmd.exe

?
Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)




Да, всё так и есть. Следующая команда нормально запускает "notepad++" и передаёт фокус окну редактора.

Правда, моргает окно cmd.exe. Но зато запускаемая программа фокус нормально получает.



Код:

Код: Выделить всё

cmd.exe /c start "" /d "C:\Program Files\Notepad++\" "notepad++.exe" "F:\...\error.log"


Цитата:



Ещё раз переустановил (удалил и установил). Поведение абсолютно то же самое:

1) при запуске текстового файла из Far Manager[/i], проводника или ярлыком notepad++ нормально запускается

2) при запуске текстового файла через задачу планировщика (в качестве действия указывается путь к текстовому файлу) открывается окно "Каким образом вы хотите открыть этот файл ?" с выделенным пунктом "notepad++"



А если открывать текстовый файл через планировщик, но при этом не непосредственно, а через "cmd.exe start ...", то окно "Каким образом вы хотите открыть этот файл ?" не открывается. notepad++ запускается сразу:



Код:

Код: Выделить всё

cmd.exe /c start "" /d "F:\..." "error.log"

При запуске через планировщик без "cmd.exe start ..."[/i] окно "Каким образом вы хотите открыть этот файл ?" открывается).



Но в конечной команде всё равно оставил явный вызов notepad++.exe на всякий случай. Раз уж он такой капризный...



Код:

Код: Выделить всё

cmd.exe /c start "" /d "C:\Program Files\Notepad++\" "notepad++.exe" "F:\...\error.log"
Аватара пользователя
CyraxZ

Re: Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)

Сообщение CyraxZ »

CyraxZ, я не уверен, что:


Цитата CyraxZ:



/d "C:\Program Files\Notepad++\"
Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)




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



Код:

Код: Выделить всё

cmd.exe /c start "" "C:\Program Files\Notepad++\notepad++.exe" "F:\...\error.log"
Аватара пользователя
Iska

Re: Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)

Сообщение Iska »

Цитата Iska:



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

Код: Выделить весь код

cmd.exe /c start "" "C:\Program Files\Notepad++\notepad++.exe" "F:\...\error.log"
Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)




Так тоже работает. Только в обоих вариантах текущим (по отношению к редактору, а не cmd.exe) является каталог файла.
Ответить

Вернуться в «Microsoft Windows 10»