Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 10 » Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)

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

Аватара для CyraxZ

Ветеран


Сообщения: 780
Благодарности: 11

Профиль | Отправить PM | Цитировать


Изменения
Автор: CyraxZ
Дата: 23-06-2017
Программы, которые необходимо часто запускать с правами администратора, а также те, которые размещаются в автозагрузке, запускаю ярлыком через планировщик.
Для некоторых программ (например, 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++" (согласно вышеприведённой статье), в качестве действия прописывается ("start" - идёт в "Программа или сценарий", остальное - в аргументы):
Код: Выделить весь код
start /d "C:\Program Files\Notepad++\" "notepad++.exe" "F:\...\error.log"
В этом случае при запуске задачи (через ярлык) на мгновение что-то открывается и тут же исчезает. Даже не понятно, что открывается "notepad++", какое-то сообщение, или cmd.exe. Если эту команду выполнить из Far Manager (запускается с правами администратора), то "notepad++" нормально открывается и получает фокус. Если выполнить эту команду из cmd.exe, то вылезает сообщение о неизвестной команде "start".

Итого. Нужно либо:
а) заставить Windows 10 средствами планировщика (когда в качестве действия указывается путь к текстовому файлу) сразу запускать notepad++ без окна "Каким образом вы хотите открыть этот файл ?"
б) "Научить" планировщик выполнять команду:
Код: Выделить весь код
start /d "C:\Program Files\Notepad++\" "notepad++.exe" "F:\...\error.log"

Отправлено: 01:19, 23-06-2017

 
x0r x0r вне форума

Забанен


Сообщения: 795
Благодарности: 137

Профиль | Цитировать


Цитата CyraxZ:
Программы, которые необходимо ... апускать с правами администратора ... которые размещаются в автозагрузке, запускаю ярлыком через планировщик. »
А почему просто не перенести ключи в реестре из
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"
хз. десятки нету.

Отправлено: 03:18, 23-06-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата CyraxZ:
В качестве примера приводится команда: /c start /d "C:\Windows\System32\" cmd.exe
Не понятно, что за "/с" здесь указывается перед командой start ? »
1. Приводится приложение «cmd.exe», а то, что указали Вы — это аргументы, которые ему передаются. Именно так написано в статье, и именно так оно и есть.
2. «/c» — это параметр интерпретатора команд cmd.exe, означающий «выполнить команду, идущую за данным параметром и завершить работу приложения». Почему именно интерпретатор команд? Потому что start — внутренняя команда интерпретатора, а не внешняя утилита в виде исполняемого файла.

Цитата CyraxZ:
Проблема 1. notepad++ невозможно нормально прописать в качестве программы по умолчанию для текстовых файлов и логов:
1) Настройки ассоциаций в параметрах самой программы никакого эффекта не приносят »
Первый вариант, насколько я читал здесь, в новых ОС более не работает.
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:28, 23-06-2017 | #3


Аватара для yurfed

Ветеран


Сообщения: 20046
Благодарности: 3123

Профиль | Отправить PM | Цитировать


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

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Последний раз редактировалось yurfed, 23-06-2017 в 06:14. Причина: Ошибся в тексте


Отправлено: 05:01, 23-06-2017 | #4


(*.*)


Сообщения: 36491
Благодарности: 6675

Профиль | Сайт | Отправить PM | Цитировать


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

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 10:23, 23-06-2017 | #5


Аватара для CyraxZ

Ветеран


Сообщения: 780
Благодарности: 11

Профиль | Отправить PM | Цитировать


Цитата:
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, 23-06-2017 в 12:29.


Отправлено: 12:21, 23-06-2017 | #6


Аватара для CyraxZ

Ветеран


Сообщения: 780
Благодарности: 11

Профиль | Отправить PM | Цитировать


Цитата:
Видимо, портативная. Используйте установщик, и будет вам счастье
Как раз использую установщик. Скачивается отсюда:
npp.7.4.2.Installer.x64.exe

В начале установки там имеется галка, отвечающая за портативную версию - она снята. После установки имеем:
1) В "Пуск - Недавно установленные программы" отсутствует
2) В "Параметры - Приложения и возможности" в списке установленных приложений присутствует (Notepad++ 64-bit x64 7.4.2)
3) В "Приложения по умолчанию - Задать значения по умолчанию по приложению" в списке программ программы "notepad++" нет

Ещё раз переустановил (удалил и установил). Поведение абсолютно то же самое:
1) при запуске текстового файла из Far Manager, проводника или ярлыком notepad++ нормально запускается
2) при запуске текстового файла через задачу планировщика (в качестве действия указывается путь к текстовому файлу) открывается окно "Каким образом вы хотите открыть этот файл ?" с выделенным пунктом "notepad++"

Отправлено: 12:51, 23-06-2017 | #7


Аватара для CyraxZ

Ветеран


Сообщения: 780
Благодарности: 11

Профиль | Отправить PM | Цитировать


Цитата CyraxZ:
Т.е. вызывается cmd.exe, который выполняет внутреннюю команду start, которая, в свою очередь, запускает целевое приложение (в качестве примера которого выступает этот же самый cmd.exe) ?
Код: Выделить весь код
cmd.exe /c start /d "C:\Windows\System32\" cmd.exe
? »
Да, всё так и есть. Следующая команда нормально запускает "notepad++" и передаёт фокус окну редактора.
Правда, моргает окно cmd.exe. Но зато запускаемая программа фокус нормально получает.
Код: Выделить весь код
cmd.exe /c start "" /d "C:\Program Files\Notepad++\" "notepad++.exe" "F:\...\error.log"
Цитата:
Ещё раз переустановил (удалил и установил). Поведение абсолютно то же самое:
1) при запуске текстового файла из Far Manager, проводника или ярлыком notepad++ нормально запускается
2) при запуске текстового файла через задачу планировщика (в качестве действия указывается путь к текстовому файлу) открывается окно "Каким образом вы хотите открыть этот файл ?" с выделенным пунктом "notepad++"
А если открывать текстовый файл через планировщик, но при этом не непосредственно, а через "cmd.exe start ...", то окно "Каким образом вы хотите открыть этот файл ?" не открывается. notepad++ запускается сразу:
Код: Выделить весь код
cmd.exe /c start "" /d "F:\..." "error.log"
При запуске через планировщик без "cmd.exe start ..." окно "Каким образом вы хотите открыть этот файл ?" открывается).

Но в конечной команде всё равно оставил явный вызов notepad++.exe на всякий случай. Раз уж он такой капризный...
Код: Выделить весь код
cmd.exe /c start "" /d "C:\Program Files\Notepad++\" "notepad++.exe" "F:\...\error.log"

Последний раз редактировалось CyraxZ, 23-06-2017 в 13:23.


Отправлено: 13:13, 23-06-2017 | #8


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


CyraxZ, я не уверен, что:
Цитата CyraxZ:
/d "C:\Program Files\Notepad++\" »
есть правильный подход. Поскольку в этом случае текущим каталогом должен быть каталог не приложения, а каталог редактируемого файла. Проверьте, будет ли работать при:
Код: Выделить весь код
cmd.exe /c start "" "C:\Program Files\Notepad++\notepad++.exe" "F:\...\error.log"

Отправлено: 14:38, 23-06-2017 | #9


Аватара для CyraxZ

Ветеран


Сообщения: 780
Благодарности: 11

Профиль | Отправить PM | Цитировать


Цитата Iska:
Поскольку в этом случае текущим каталогом должен быть каталог не приложения, а каталог редактируемого файла. Проверьте, будет ли работать при:
Код: Выделить весь код
cmd.exe /c start "" "C:\Program Files\Notepad++\notepad++.exe" "F:\...\error.log" »
Так тоже работает. Только в обоих вариантах текущим (по отношению к редактору, а не cmd.exe) является каталог файла.

Отправлено: 23:26, 23-06-2017 | #10



Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 10 » Службы - [решено] Перевод фокуса на программу, запускаемую из планировщика (notepad++)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Не запускается скрипт из планировщика. Fox52 Скриптовые языки администрирования Windows 2 19-02-2015 11:44
CMD/BAT - Запуск bat файла из Планировщика Roosp Скриптовые языки администрирования Windows 17 06-09-2013 00:19
CMD/BAT - Запуск из планировщика батника находящегося на сервере Serg2010 Скриптовые языки администрирования Windows 1 03-05-2012 08:30
Запуск терминальной сессии из планировщика Strannik06 Microsoft Windows NT/2000/2003 8 31-03-2012 18:10
CMD/BAT - [решено] Автоперевод фокуса на программу, которая запускается из планировщика Morpheus Скриптовые языки администрирования Windows 16 17-12-2010 18:54




 
Переход