Поймать задачи из планировщика задач Windows в приложении .net - PullRequest
0 голосов
/ 14 марта 2009

У меня есть программа, которая работает в фоновом режиме, эта программа должна быть уведомлена, когда происходит конкретное событие Windows.

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

Редактировать: Решил вот так.

Основная программа прослушивает TCP-соединение, и из планировщика задач я запускаю другой экземпляр программы с аргументом командной строки. Если программа получает этот аргумент, она подключается к основной программе, которая выполняет какое-то действие при получении соединения.

Ответы [ 3 ]

1 голос
/ 14 марта 2009

Я хотел бы, чтобы планировщик запустил новый процесс (это мог быть тот же самый exe приложения), и чтобы этот процесс установил событие, которое ожидает первый процесс. Мне это кажется довольно чистым, особенно если у вас есть планировщик, запускающий одно и то же приложение (возможно, со специальной командной строкой).

0 голосов
/ 15 марта 2009

Я не уверен, что вы подразумеваете под «событием Windows» - их так много! Вы говорите о планировщике задач в заголовке, но то, что вы пишете в своем вопросе, по-видимому, указывает на некоторые внешние изменения, которые вы ищете с помощью планировщика. Я предполагаю, что это не событие клавиатуры, мыши или Windows, поскольку именно для этого предназначены рамки GUI.

Если подход «склеить» приложение не является элегантным или достаточно быстрым для вас, я бы сказал, копаться в Инструментарий управления Windows . Посмотрите эту статью для MSDN для начала и, возможно, эту статью о том, как работать в VS : если это не поможет, вам, возможно, придется перейти к COM Interop уровень для регистрации вашего слушателя.

Вы не указали, как реализовано ваше «фоновое приложение»: будь то обычный процесс с окном / без графического интерфейса или без него, или как служба Windows, или что-то более современное 1014 *. Я думаю, что слушатели WMI работают со всем этим, но мышление не может заменить тестирование (и наоборот!).

Я предлагаю этот совет с некоторой нерешительностью: WMI основан на DCOM , что может вызывать боль в заднем отделе, если вы начинаете работать по сети, а иногда и на одном компьютере (работающем под другим пользователем Счета). Я уверен, что где-то под всеми загадочными параметрами и конфигурациями есть продуманная модель безопасности!

0 голосов
/ 14 марта 2009

Я второй (и одобрил) комментарий Мюррея. Просто запустите новый процесс, который «информирует» существующий процесс о возникновении события, а затем умирает. Если вам просто нужно знать, что это произошло в ожидании глобального события (значение слова windows, а не .net) будет достаточно простым.

...