Службы или фоновое приложение Windows - PullRequest
0 голосов
/ 22 декабря 2018

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

Мой мобильный телефон интерпретирует сообщение, затем покажет опции для меня, затем я выберу опцию и отправлю ответ на ноутбук.В данный момент я думаю об отправке этого сообщения через WiFi, Bluetooth или TCP.

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

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

1 Ответ

0 голосов
/ 03 января 2019

Ответ зависит от того, как ваше приложение будет «отслеживать действия приложений на вашем ноутбуке».

Вот несколько важных фактов, относящихся к вашей ситуации:

  1. Каждое приложениеработа на вашем компьютере работает в сеансе - объект, содержащий процессы и другие системные объекты от имени пользователя, который вошел в систему.Когда вы входите в свой ПК, для вас создается новый сеанс.Вы окажетесь в Сессии 1 или Сессии 2 и т. Д. .(Вы можете увидеть сеанс каждого приложения в диспетчере задач, добавив столбец «Идентификатор сеанса» на вкладке «Сведения»).

  2. Когда ваш компьютер загружается, Windows автоматически создает сеанс0 для хранения системных процессов и объектов.Все службы Windows работают в сеансе 0.

  3. Приложение Windows (включая службу) не может легко взаимодействовать с другим приложением, запущенным в другом сеансе.Основные функции API (такие как EnumWindows или GetWindowText) просто не работают между сеансами.Вы должны перепрыгнуть через несколько циклов (включая функцию CreateProcessAsUser ) для работы между сеансами.

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

...