1 / 1 / 0
Регистрация: 12.05.2013
Сообщений: 50
|
|
Windows service для подсчета пробега мышки25.05.2013, 16:52. Показов 3044. Ответов 21
Метки нет Все метки)
(
Нужно написать службу,которая будет подсчитывать пробег мышки. Думаю нужно фиксировать координаты курсора,затем через некоторое довольно маленькое время снова запрашивать координаты и высчитывать расстояние между предыдущей фиксированной точкой и новой. В нужном ли направлении думаю? Если да,то как получить координаты мыши в службе?
0
|
25.05.2013, 16:52 | |
Ответы с готовыми решениями:
21
A Windows service with the name MySQL already exists. Please uninstall this service correctly or choose a different name for the new service. Согласно пробега, вести учет пробега масла, фильтров и тд Service для Windows |
28 / 28 / 2
Регистрация: 24.01.2013
Сообщений: 183
|
|
25.05.2013, 17:06 | |
0
|
1 / 1 / 0
Регистрация: 12.05.2013
Сообщений: 50
|
|
25.05.2013, 17:15 [ТС] | |
ayrat, Это вроде не то,таким образом можно только в формах запрашивать координаты (может и нет,но в коде службы не получается создать экземпляр класса Cursor).
Думаю пока в файл будет записываться информация Service start 25.05.2013 17:57:38 - service run. 25.05.2013 17:57:43 - service run. 25.05.2013 17:57:48 - service run. 25.05.2013 17:57:53 - service run. 25.05.2013 17:57:58 - service run. 25.05.2013 17:58:03 - service run. 25.05.2013 17:58:08 - service run. 25.05.2013 17:58:13 - service run. Service stop 25.05.2013 17:58:18 - service run. что-то в этом духе,только интервал времени побольше сделать для вывода. Но лучше как-нибудь красивее все оформить.Возможно ли это? Чтобы,например,при остановке службы высвечивалось какое-нибудь окошко с информацией
0
|
Ушел с форума
![]() ![]() |
||
25.05.2013, 18:22 | ||
Службы запускаются в отдельной, неинтерактивной оконной станции, а на Windows Vista и выше - еще и в отдельной от пользовательских процессов сессии. Я не проверял, но не сомневаюсь, что GetCursorPos и им подобные функции, вызванные в службе, будут возвращать либо нулевые, либо бессмысленные значения.
1
|
1 / 1 / 0
Регистрация: 12.05.2013
Сообщений: 50
|
|
25.05.2013, 18:45 [ТС] | |
XsauX, Спасибо.Так и думал,что без хуков не обойтись.Но пока сложности с пониманием что такое хуки и зачем они нужны.
Убежденный, наверно,я не так написал) может так правильней: как в коде службы получить текущие координаты курсора. Т.е. чтобы служба во время работы получала координаты и с помощью них потом можно было бы вычислить общее расстояние,которое мышь пробежала
0
|
Ушел с форума
![]() ![]() |
|
25.05.2013, 18:53 | |
Windows - это многопользовательская система.
Одновременно в ней могут быть залогинены несколько пользователей, консольно или через терминал (удаленный рабочий стол, например). У каждого пользователя своя сессия, свои оконные станции и рабочие столы. Упрощенно говоря, каждый пользователь имеет свою копию всего, что связано с окнами, графическим интерфейсом и вводом. И, например, функция получения координат курсора будет возвращать разные значения, в зависимости от того, в контексте какого процесса она вызывается. А службы работают в отдельном, неинтерактивном контексте, который не принадлежит какому-то определенному пользователю, поэтому все, что связано с интерфейсом, окнами, оконными сообщениями, хуками и тому подобным, вызывать в службах не имеет смысла.
2
|
19 / 19 / 0
Регистрация: 17.05.2013
Сообщений: 65
|
|
25.05.2013, 19:00 | |
Когда то давно я делал кейлогер в службе с хуком, правда виндовс был еще с лохматых годов , возможно времена меняются ). А хотя , тут надо разобраться , как работает привязка системных сообщений к юзеру. т.е если некий юзер двинул мышку (пускай в своей сессии) , сообщение поступает в очередь , и если есть хук на это событие и адрес функции которую требуется вызвать , то какая разница какой юзер инициировал это событие ?. - в общем нужно попробовать.
0
|
Ушел с форума
![]() ![]() |
|
25.05.2013, 19:12 | |
Юзер двинул мышку, сообщение поступает в очередь окна, над которым курсор.
Это окно находится на рабочем столе юзера "Default", а рабочий стол - в его оконной станции "WinSta0", все это в сессии юзера. Сервис запущен в другой сессии, в другой оконной станции со своими десктопами. Ни callback-функции хуков, ни оконные сообщения до него не дойдут, это ограничение системы безопасности Windows. Костыльный вариант, который работает лишь на системах до Windows Vista - это в настройках службы поставить галочку "разрешить взаимодействие с рабочим столом", он будет иметь смысл только для первого залогиненного пользователя в системе. Правильно - это отслеживать вход пользователей в систему, запускать в сессии каждого интерактивный процесс, а уже из него следить за мышью. Простейший способ добиться этого - поместить программу в автозагрузку через HKLM\SOFTWARE\Microsoft\Windows\CurrentV ersion\Run Из сервиса запускать интерактивные процессы в сессиях пользователей тоже можно, но это сложный вариант, я не рекомендую его применять без подготовки, так как легко можно "накосячить" и налететь на известные (и неизвестные) рифы.
1
|
19 / 19 / 0
Регистрация: 17.05.2013
Сообщений: 65
|
|
25.05.2013, 19:26 | |
И , где можно подробнее почитать ? - ото в мсдн все как то скромненько и без нюансов.
Добавлено через 6 минут З.Ы А если запустить службу под определенным пользователем и этим же юзером залогиниться в систему ? - они в одном пространстве будут работать ?
0
|
Ушел с форума
![]() ![]() |
|||
25.05.2013, 19:42 | |||
![]() Во-первых, такая служба не сможет стартовать, если у пользователя установлен пустой пароль, ибо по умолчанию на Windows включена политика "разрешить использование пустых паролей только при консольном входе". А запрашивать у пользователя пароль при установке службы, согласитесь - как-то неприлично. Во-вторых, учетная запись пользователя должна иметь право "вход в качестве службы". По умолчанию таких прав у пользователя нет. В-третьих, если мне не изменяет память, такая служба может стартовать только после входа пользователя в систему, и запускается она вручную. Ну то есть, опять "кто-то" должен будет следить за этим. Непрактично. В-четвертых, служба все равно будет запускаться в отдельной оконной станции и ни хуки, ни оконные сообщения, ни координаты мыши в нее не придут. Добавлено через 12 минут Services in Windows Impact of Session 0 Isolation on Services and Drivers in Windows About Window Stations and Desktops Interactive Services Starting an Interactive Client Process in C++
3
|
Ушел с форума
![]() ![]() |
|
25.05.2013, 20:13 | |
1
|
1 / 1 / 0
Регистрация: 12.05.2013
Сообщений: 50
|
|
26.05.2013, 09:33 [ТС] | |
еще такой вопрос. Создал протую службу,затем установил её,она отработала,все нормально.
Service start 26.05.2013 11:33:44 - service run. 26.05.2013 11:33:49 - service run. 26.05.2013 11:33:54 - service run. 26.05.2013 11:33:59 - service run. 26.05.2013 11:34:04 - service run. 26.05.2013 11:34:09 - service run. 26.05.2013 11:34:14 - service run. 26.05.2013 11:34:19 - service run. 26.05.2013 11:34:24 - service run. 26.05.2013 11:34:29 - service run. 26.05.2013 11:34:34 - service run. 26.05.2013 11:34:39 - service run. 26.05.2013 11:34:44 - service run. 26.05.2013 11:34:49 - service run. 26.05.2013 11:34:54 - service run. 26.05.2013 11:34:59 - service run. 26.05.2013 11:35:04 - service run. 26.05.2013 11:35:09 - service run. 26.05.2013 11:35:14 - service run. 26.05.2013 11:35:19 - service run. Service stop Но вот если я код изменяю в проекте, например,чтобы выводилось не service run,а service running ,и заново устанавливаю службу,то выводит всеравно тоже самое.В чем проблема?
0
|
Ушел с форума
![]() ![]() |
|
26.05.2013, 10:07 | |
0
|
26.05.2013, 10:07 | |
Помогаю со студенческими работами здесь
20
Windows Service Manager Tray , Windows Service Manager (SrvMan) информация Драйвер манипулятора PS/2-мышки для ОС Windows Установка service pack для Windows 7 Помогите найти Service Pack 1 для Windows 7 Service Pack для Windows 7 Home Basic Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
|
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
|
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
|
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
|
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
|
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
|
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
|
Конвейеры ETL с Apache Airflow и Python
AI_Generated 13.05.2025
ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . .
|
Выполнение асинхронных задач в Python с asyncio
py-thonny 12.05.2025
Современный мир программирования похож на оживлённый мегаполис – тысячи процессов одновременно требуют внимания, ресурсов и времени. В этих джунглях операций возникают ситуации, когда программа. . .
|
Работа с gRPC сервисами на C#
UnmanagedCoder 12.05.2025
gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . .
|