Доброе время суток.
Мышка Prestigio, на боковые кнопки которй назначена комбинация клавиш Ctrl Alt + и Ctrl Alt -. Моя программка назначает в системе те же клавиши, Ctrl Alt + и Ctrl Alt - и эмулирует соответственно коды нажатия клавиш клавиатуры 107 и 109, драйвер клавиатуры Genius перехватывает эмуляцию этих клавиш 107 и 109 и делает в системе громкость больше или громкость меньше, таким образом программа позволяет регулировать уровень громкости с мышки. Так вот. Как программа эта схема отлично работает, громкость регулируется.
code_28429.txt
А как сервис нет, вообще ничего не происходит.
code_28430.txt
А я бы хотел использовать эту программу именно как сервис. Помогите пожалуйста разобраться почему не работает как сервис? Инсталирую сервис VCM_Service.exe /install, запускаю службу net start VCM_Service.exe но не работает. OS Windows 7. Подскажите пожалуйста, что не так делаю?
Этот топик читают: Гость
|
Ответов: 9
Рейтинг: 0
|
|||
| карма: 0 |
| ||
| файлы: 2 | code_28429.txt [947B] [160], code_28430.txt [1KB] [220] |
|
Ответов: 3889
Рейтинг: 362
|
|||
|
Galf, у сервисов в современных системах физически штатно нет очереди собщений, так как и окон-то у них тоже нет. Глобальные горячие клавиши принимаются окнами(даже если оно невидимо). То, у чего нет окна, штатно принять сообщение о нажатии комбинации горячих клавиш не сможет.
|
|||
| карма: 1 |
|
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
|
Редактировалось 1 раз(а), последний 2025-01-17 15:35:18 |
|||
| карма: 0 |
|
|
Ответов: 9
Рейтинг: 0
|
|||
|
1nd1g0, Тоесть не KeyEvent а GHotKey конечно, ошибся.
------------ Дoбавленo в 10.38: А перехват нажатия клавиш клавиатуры не на основе оконных сообщений в HiAsm можно как нибудь реализовать? |
|||
| карма: 0 |
|
|
Ответов: 3889
Рейтинг: 362
|
|||
|
Galf, в современных ОС старательно блокируют попытки сервисов иметь интерфейс, это обходится всякими шаманскими способами, но в Вашем случае, требующем регистрации в очереди сообщений, явно либо приложение пользовательского режима нужно, либо попробовать мою статью: Keyboard:global_keys_capture
|
|||
| карма: 1 |
|
|
Ответов: 16884
Рейтинг: 1239
|
|||
|
Galf, попробуй коды 174,175.
173 - выключение звука. |
|||
| карма: 25 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2148
|
|||
|
37.99.108.10 писал(а): в сервис вставляться не долженНевозможность вставки чего-то куда-то реализуется на уровне среды ------------ Дoбавленo в 10.58: 1nd1g0, а если попытаться регулярно прокручивать глобальную очередь событий |
|||
| карма: 22 |
|
|
Ответов: 3889
Рейтинг: 362
|
|||
|
nesco, вроде, в NTService прокутка уже есть. А вот больше никакой работы с очередью сообщений нет, ЕМНИП.
------------ Дoбавленo в 11.08: Пардон, наврал, там прокрутка в случае постановки на паузу. ------------ Дoбавленo в 11.13: 37.99.108.10 писал(а): принудительно в сервис какое либо окноКомпонент GHotKey именно это и делает. Он пытается создать невидимое окно нулевого размера, которое будет принимать нажатия глобальных клавиш. Подключитесь к onError и посмотрите, не выходит ли что-нибудь оттуда, скорее всего это будет код 1 или 2 - не удалось создать классокно. А не удалось потому, что это служба, которой запрещено иметь интерфейс с пользователем. Вернее, страшная тайна заключается в том, что у служб по умолчанию свой контекст системных объектов(не путать с правами, права у службы могут быть чьи угодно, контекст - свой). Теоретически можно "затащить" службу в контекст нужного пользователя и дать доступ к его рабочему столу, но это практически не имеет смысла т.к. требует массу телодвижений и получается обычное приложение, запущенное очень кривым способом. Гораздо умнее запускать приложение с невидимым окном. Если так хочется, можно делать это своей, подставной службой-загрузчиком. Популярный нынче метод у всяких навязчивых сервисов типа гугломейлояндексоквипа, не говоря уже о зловредах. |
|||
| карма: 1 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2148
|
|||
|
1nd1g0 писал(а): А не удалось потому, что это служба, которой запрещено иметь интерфейс с пользователемЯ вообще не пойму -- чем ТС не устраивает фоновое приложение |
|||
| карма: 22 |
|
|
Ответов: 3889
Рейтинг: 362
|
|||
|
nesco писал(а): Я вообще не пойму -- чем не устраивает фоновое приложениеЯ - тоже, см. пост выше. ------------ Дoбавленo в 11.21: nesco, [offtop]хотя, есть кое что неприятное в фоновом приложении для меня, они у меня стабильно виснут через сутки работы на сервере. Но это давняя история, при перезапуске самих себя ещё сутки работает.[/offtop] |
|||
| карма: 1 |
|
|
Ответов: 9
Рейтинг: 0
|
|||
|
1nd1g0, На основе компонента Keyboard я тоже пробовал, но этот компонент не распознаёт коды мультимедийных клавиш, 174 и 175, нажимаешь громкость большеменьше - ничего не происходит, а обычные клавиши распознаёт конечно.
Tad, действительно коды 174 и 175, 107 и 109 это я при написании сообщения попутал невнимательно. nesco, Так тоже пробовал, Но видимо если нет вообще никаких окон, то и прокручивать видимо нечего. Жаль. програмка бы запускалась от системы, работала бы в фоне, это было бы рационально так как програмка должна ведь работать постоянно да и функциональность её минимальна, а громкость с мышки бы регулировалась, это удобно, а так, надо затевать автозагрузку, ешё один "250ый") процесс в Диспетчере Задач, вобщем не то. Больше ни у кого никаких соображений нет? ------------ Дoбавленo в 11.54: nesco, Да не то что бы не устраивает, ради одной функции которую выполняет программа затевать автозагрузку и очередной процесс в диспетчере задач как то не то, так бы она работала сервисом и я бы про неё забыл. Ну и зная, что в HiAsm есть такой компонент - сервис, решил воспользоваться, однако узнал здесь, на форуме, что компонент с окнами не работает. Зайду с другой стороны, нет ли возможности обрабатывать нажатия горячих клавиш способом не очереди оконных сообщений? |
|||
| карма: 0 |
|
|
Ответов: 3889
Рейтинг: 362
|
|||
|
Galf писал(а): ешё один "250ый") процесс в Диспетчере Задач, вобщем не тоМожно подумать, сервис у Вас не будет "ещё одним процессом". Автозагрузка как раз гораздо проще танцев с бубном и сервисами. У меня есть фоновые приложения в трее, выполняют свои функции, но если там есть таймерыпотоки, то где-то через сутки они могут перестать работать. Для реакции на глобальные клавиши, по идее, не актуально, должно работать долго и без проблем. Я Вам даже больше скажу, я не поленился проверить - проводник без проблем позволяет повесить два ярлыка на рабочий стол, реагирующие на Ctrl Alt +-. Вешаем туда изменение громкости и всё. Этакий гиковский вариант, и никаких автозагрузок ------------ Дoбавленo в 12.01: Galf писал(а): нет ли возможности обрабатывать нажатия горячих клавиш способом не очереди оконных сообщений?А как выглядит Ваша (не работающая?) схема на Keyboard или IC от Ivann, что я давал в своей статье? |
|||
| карма: 1 |
|
|
Ответов: 4672
Рейтинг: 768
|
|||
|
А в сервисе не получится поставить хук на нажатия клавиш?
|
|||
| карма: 26 |
|
|
Ответов: 3889
Рейтинг: 362
|
|||
|
Netspirit писал(а): А в сервисе не получится поставить хук на нажатия клавиш?Если у него 64-хбитная система, то, по идее, он (хук) будет виртуализирован и приложения вне WOW64 всё равно будут ловить паразитные нажатия. |
|||
| карма: 1 |
|
|
Ответов: 9
Рейтинг: 0
|
|||
|
1nd1g0, "Если так хочется, можно делать это своей, подставной службой-загрузчиком. Популярный нынче метод у всяких навязчивых сервисов типа гугломейлояндексоквипа, не говоря уже о зловредах." Да, придётся, сделать службу-загрузчик, которая будет ещё помимо загрузки проверять есть ли фоновое приложение в процессах и если нет запускать, а саму прожку делать как фоновое приложение. Я просто не думал и не знал, что сервис работает таким образом и что ради того что бы приложение получило оконное сообщение нужно городить такой огород с службой-загрузчиком и запускаемым фоновым приложением, да и сам сервис тогда не нужен, толку от него, что он сможет только лишь перезапускать прожку.
"Я Вам даже больше скажу, я не поленился проверить - проводник без проблем позволяет повесить два ярлыка на рабочий стол, реагирующие на Ctrl Alt +-. Вешаем туда изменение громкости и всё. Этакий гиковский вариант, и никаких автозагрузок и" Я недавно поставил семёрку и решил попробовать сделать прожку полностью на HiAsm а с ярлыками у меня было раньше на XP правда я использова nircmd и лежали они %USERPROFILE%Главное меню ПрограммыСтандартныеразвлечениеГромкость большеменьше.lnk так что этот способ я знаю, и nircmd подвисала при таком способе, т.е. нажимаешь на кнопочку мышки раз, два, а потом нужно ждать пока она обработает это и начнёт регулировать громкость, я предположил что может быть это не nircmd виновата а именно такой способ через ярлыки. Поэтому решил на новой системе сделать это минуя использование ярлыков поностью на HiAsm. Рискую вызвать Ваш гнев, но всё же спрошу, а зачем тогда HiAsm если есть ярлыки? такой замечательный элемент программирования) ------------ Дoбавленo в 12.31: Netspirit, 1nd1g0, Не система X86. А это возможно поставить хук на нажатия клавиш? ------------ Дoбавленo в 12.38: 1nd1g0, моей схемы на Keyboard нет, а схема Из справки HiAsm не работает с мультимедийными клавишами код которых 174, 175 ------------ Дoбавленo в 12.59: Прошу прощения я не увидел сначала Вариант от Ivann (на базе Inline Code). Этот код определяет клавиши 174, 175, но так как дельфи я не знаю спрошу, этот код работает через оконные сообщения? т.е. в сервисе он работать будет? |
|||
| карма: 0 |
|




Поиск
Друзья
Администрация