1 / 1 / 0
Регистрация: 12.05.2013
Сообщений: 50

Windows service для подсчета пробега мышки

25.05.2013, 16:52. Показов 3044. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно написать службу,которая будет подсчитывать пробег мышки. Думаю нужно фиксировать координаты курсора,затем через некоторое довольно маленькое время снова запрашивать координаты и высчитывать расстояние между предыдущей фиксированной точкой и новой. В нужном ли направлении думаю? Если да,то как получить координаты мыши в службе?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.05.2013, 16:52
Ответы с готовыми решениями:

A Windows service with the name MySQL already exists. Please uninstall this service correctly or choose a different name for the new service.
Не знаю что делать дальше

Согласно пробега, вести учет пробега масла, фильтров и тд
Ребята, выручайте. На форме есть база данных ADO. Из поля берется пробег автомобиля. Пробег ежедневно меняется. Нужно, согласно этого...

Service для Windows
Доброго времени суток всем! У меня такой вопросик, вот решил написать для себя сервис для винды который снимает скриншоты экрана... ...

21
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
28 / 28 / 2
Регистрация: 24.01.2013
Сообщений: 183
25.05.2013, 17:50
Цитата Сообщение от bbt Посмотреть сообщение
Это вроде не то
Ты меня малость смутил конечно, проверять не буду, а ты попробуй добавить библиотеку
C#
1
using System.Windows.Forms;
и использовать то что я тебе скинул. Протестируй возможно будет и работать.
0
1 / 1 / 0
Регистрация: 12.05.2013
Сообщений: 50
25.05.2013, 18:00  [ТС]
Неа.Не добавляется
Error 1 The type or namespace name 'Windows' does not exist in the namespace 'System' (are you missing an assembly reference?)
0
28 / 28 / 2
Регистрация: 24.01.2013
Сообщений: 183
25.05.2013, 18:02
как это не добавляется??? у меня же добавилось.
ты в References его добавил ???
0
19 / 19 / 0
Регистрация: 17.05.2013
Сообщений: 65
25.05.2013, 18:05
Короче , нужно вешать системный хук на мышку - это читай про хуки в винде. (SetWindowsHookEx)
1
28 / 28 / 2
Регистрация: 24.01.2013
Сообщений: 183
25.05.2013, 18:07
XsauX,

Не по теме:

Братюня :)))

0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
25.05.2013, 18:22
Цитата Сообщение от bbt Посмотреть сообщение
Если да,то как получить координаты мыши в службе?
Вы уверены, что это вообще возможно в такой постановке вопроса ?
Службы запускаются в отдельной, неинтерактивной оконной станции, а на
Windows Vista и выше - еще и в отдельной от пользовательских процессов сессии.
Я не проверял, но не сомневаюсь, что GetCursorPos и им подобные функции,
вызванные в службе, будут возвращать либо нулевые, либо бессмысленные значения.
1
19 / 19 / 0
Регистрация: 17.05.2013
Сообщений: 65
25.05.2013, 18:34
Windows Vista и выше - еще и в отдельной от пользовательских процессов сессии.
это как ?
Я не проверял, но не сомневаюсь, что GetCursorPos и им подобные функции
я не помню что бы были какие то ограничения на службы - по сути работают по тем же принципам что и обычные приложения.
0
1 / 1 / 0
Регистрация: 12.05.2013
Сообщений: 50
25.05.2013, 18:45  [ТС]
XsauX, Спасибо.Так и думал,что без хуков не обойтись.Но пока сложности с пониманием что такое хуки и зачем они нужны.

Убежденный, наверно,я не так написал) может так правильней: как в коде службы получить текущие координаты курсора. Т.е. чтобы служба во время работы получала координаты и с помощью них потом можно было бы вычислить общее расстояние,которое мышь пробежала
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
25.05.2013, 18:53
Windows - это многопользовательская система.
Одновременно в ней могут быть залогинены несколько пользователей, консольно или
через терминал (удаленный рабочий стол, например). У каждого пользователя своя
сессия, свои оконные станции и рабочие столы. Упрощенно говоря, каждый пользователь
имеет свою копию всего, что связано с окнами, графическим интерфейсом и вводом.
И, например, функция получения координат курсора будет возвращать разные значения,
в зависимости от того, в контексте какого процесса она вызывается.

А службы работают в отдельном, неинтерактивном контексте, который не принадлежит
какому-то определенному пользователю, поэтому все, что связано с интерфейсом, окнами,
оконными сообщениями, хуками и тому подобным, вызывать в службах не имеет смысла.
2
19 / 19 / 0
Регистрация: 17.05.2013
Сообщений: 65
25.05.2013, 19:00
Когда то давно я делал кейлогер в службе с хуком, правда виндовс был еще с лохматых годов , возможно времена меняются ). А хотя , тут надо разобраться , как работает привязка системных сообщений к юзеру. т.е если некий юзер двинул мышку (пускай в своей сессии) , сообщение поступает в очередь , и если есть хук на это событие и адрес функции которую требуется вызвать , то какая разница какой юзер инициировал это событие ?. - в общем нужно попробовать.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
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
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
25.05.2013, 19:42
Цитата Сообщение от XsauX Посмотреть сообщение
А если запустить службу от имени текущего юзверя ?
А здесь тоже уже заботливо разложены грабельки

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

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

В-третьих, если мне не изменяет память, такая служба может стартовать только
после входа пользователя в систему, и запускается она вручную. Ну то есть, опять
"кто-то" должен будет следить за этим. Непрактично.

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

Добавлено через 12 минут
Цитата Сообщение от XsauX Посмотреть сообщение
И , где можно подробнее почитать ? - ото в мсдн все как то скромненько и без нюансов.
Например:
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
1 / 1 / 0
Регистрация: 12.05.2013
Сообщений: 50
25.05.2013, 20:11  [ТС]
Значит таким способом точно нельзя решить эту задачу? А как тогда можно,может есть идеи?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
25.05.2013, 20:13
Написал выше:

Цитата Сообщение от Убежденный Посмотреть сообщение
Правильно - это отслеживать вход пользователей в систему, запускать в сессии
каждого интерактивный процесс, а уже из него следить за мышью.
Простейший способ добиться этого - поместить программу в автозагрузку через
HKLM\SOFTWARE\Microsoft\Windows\CurrentV ersion\Run
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
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
26.05.2013, 10:07
Цитата Сообщение от bbt Посмотреть сообщение
если я код изменяю в проекте, например,чтобы выводилось не service run,а service running ,и заново устанавливаю службу,то выводит всеравно тоже самое.В чем проблема?
Наверное в том, что Вы не скопировали новый exe службы на место старого.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.05.2013, 10:07
Помогаю со студенческими работами здесь

Windows Service Manager Tray , Windows Service Manager (SrvMan) информация
Есть ли у кого то информация по Windows Service Manager Tray , Windows Service Manager (SrvMan) . Статьи , описания , инструкции по...

Драйвер манипулятора PS/2-мышки для ОС Windows
Здравствуйте! Мне необходимо разработать драйвер манипулятора PS/2-мыши для ОС Windows. Подскажите пожалуйста на каком языке и в какой...

Установка service pack для Windows 7
помогите Недавно купили компьютор на нем установлено Windows 7 . Не могу загрузить игру война в небе требует servis pak ...

Помогите найти Service Pack 1 для Windows 7
помогите найти сервис пак 1 для Windows 7 домашняя расширенная версия!!!

Service Pack для Windows 7 Home Basic
В общем, на ноутбуке стоит Windows 7 Home Basic. хочу установить на него обновления и сервис пак. но возможности обновить через Интернет -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Как использовать 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-сервисов как минимум тем, что. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru