Программирование службы Windows - PullRequest
0 голосов
/ 16 апреля 2010

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

Пока работает.

Пока у меня есть бланк. Я использовал DoubleClick для notifyIcon, чтобы вызвать форма (я буду использовать форму для чего-то позже).

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

Прежде всего, если возможно, я бы хотел удалить кнопку «Развернуть» и «Отменить» в форме. Большинство приложений Windos, которые я видел, предлагают возможность закрыть приложение, щелкнув правой кнопкой мыши на значке уведомления, который вызывает меню параметров.

Я вижу, что в свойствах формы в разделе Разное есть кнопка Отмена. Но я не вижу, как это деактивировать. В свойствах форума, которые я вижу в разделе «Стиль окна», есть опция ControlBox, при которой все три кнопки (сворачивать, максимизировать и отменять) исчезают.

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

Под заголовком «Фокус» в свойствах указан идентификатор «Деактивировать». Я создал свой собственный событие / метод / функция для этого и в отладке я заметил, что когда вы нажимаете на x-box в верхнем правом углу, эта функция вызывается Проблема в том, что после функции приложение закрывается в любом случае. Как переопределить эту функцию?

Во-вторых, как вы ловите событие нажатия правой кнопки на значке уведомления в трей

Я вижу, как создавать события для "Click" и "MouseClick" и т. Д., Но как я определяю какая кнопка была нажата?

Использование правильного нажатия кнопки - вот как такие программы знают, когда открывать меню. Так что я бы хотел бы знать, как это сделать.

Ответы [ 2 ]

4 голосов
/ 16 апреля 2010

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

Вам необходимо разделить ваше приложение на пользовательскую программу, которая может отображать значок в области уведомлений и отображать формы и службу. Они должны быть отдельными процессами и взаимодействовать через IPC (разделяемая память, именованные каналы, сокеты и т. Д.).

Что касается того, как реагировать на щелчок правой кнопкой мыши на вопросе о значке уведомления, вам просто нужно назначить что-то в конструкторе для свойства ContextMenu :

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

1 голос
/ 16 апреля 2010

Стандартные службы Windows вообще не работают с любым пользовательским интерфейсом. Вообще говоря, ваш тип проекта службы Windows в Visual Studio не будет содержать никаких компонентов пользовательского интерфейса.

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

В качестве примера, SQL Server работает как служба, независимо от того, запущена ли Management Studio или какие-либо другие вспомогательные приложения пользовательского интерфейса.

В любом случае, «компонент» пользовательского интерфейса службы должен быть совершенно отдельным приложением. Это особенно важно в мире после Vista, по причинам, указанным Remus Rusanu . Для этого вы создадите отдельный проект WinForms и попросите его отправлять сообщения в службу для контроля. (Это может включать основы, такие как запуск, остановка и перезапуск; обычно оно также включает другие специфичные для службы команды.)

Возможно, вы захотите прочитать следующие другие вопросы здесь, в StackOverflow, чтобы получить некоторые рекомендации по стандартному шаблону приложения-службы Windows Service / UI:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...