Горячие клавишы
От: _sergius_ Украина  
Дата: 27.10.03 11:21
Оценка:
Как реализовать горячие клавиши, если нет главного окна (например если это служба)?
Re: Горячие клавишы
От: antx  
Дата: 27.10.03 11:39
Оценка:
Здравствуйте, _sergius_, Вы писали:

__>Как реализовать горячие клавиши, если нет главного окна (например если это служба)?


хук поставить)
Re: Горячие клавишы
От: IPv6 Казахстан  
Дата: 27.10.03 11:41
Оценка: +1
Здравствуйте, _sergius_, Вы писали:

__>Как реализовать горячие клавиши, если нет главного окна (например если это служба)?


написать отдельную прогу которая общается с сервисом, но сама им не явлаяется. и грузится в каждого пользователя (прям в мозг)
Re[2]: Горячие клавишы
От: Аноним  
Дата: 27.10.03 12:32
Оценка:
Здравствуйте, IPv6, Вы писали:

IP>Здравствуйте, _sergius_, Вы писали:


__>>Как реализовать горячие клавиши, если нет главного окна (например если это служба)?


IP>написать отдельную прогу которая общается с сервисом, но сама им не явлаяется. и грузится в каждого пользователя (прям в мозг)


К сожалению такой способ не подходит, должна быть только одна служба. Все равно спасибо за совет
Re: Горячие клавишы
От: Supervisor Беларусь  
Дата: 27.10.03 13:16
Оценка:
Здравствуйте, _sergius_, Вы писали:

__>Как реализовать горячие клавиши, если нет главного окна (например если это служба)?


Создать вспомогательное окно, которое будет hidden. Кроме того, если это служба, то можно сделать так, что оно будет принадлежать другому Desktop`у (например: WinLogon). Тогда с его помощью можно будет и сообщения различные обрабатывать, если возникнет потребность.
... << RSDN@Home 1.1 beta 2 >>
Re[2]: Горячие клавишы
От: Аноним  
Дата: 27.10.03 14:07
Оценка:
Здравствуйте, Supervisor, Вы писали:

S>Здравствуйте, _sergius_, Вы писали:


__>>Как реализовать горячие клавиши, если нет главного окна (например если это служба)?


S>Создать вспомогательное окно, которое будет hidden. Кроме того, если это служба, то можно сделать так, что оно будет принадлежать другому Desktop`у (например: WinLogon). Тогда с его помощью можно будет и сообщения различные обрабатывать, если возникнет потребность.


Это не прокатит, горячие клавиши работают лишь в перделах десктопа в котором зарегистрированы. кажется
Re: Горячие клавишы
От: alexandrov_alex США  
Дата: 27.10.03 15:04
Оценка:
Здравствуйте, _sergius_, Вы писали:

s> Как реализовать горячие клавиши, если нет главного окна (например если

s> это служба)?

Если у твоего потока нет цикла выборки сообщений — то только поллировать GetAsyncKeyState (идиотский способ — не рекомендуется). Если же есть, то RegisterHotKey.

-- Всего хорошего!
-- Alex Alexandrov, e-mail: alex_alexandrov@fromru.com
Posted via RSDN NNTP Server 1.8 beta
It's kind of fun to do the impossible (Walt Disney)
Re: Горячие клавишы
От: kol_bok  
Дата: 27.10.03 15:12
Оценка:
Здравствуйте, _sergius_, Вы писали:

__>Как реализовать горячие клавиши, если нет главного окна (например если это служба)?



Попробуй DirectInput , только не будет работать на голой 95-й винде ( без DX) на остальных будет.
Зато никаких жуков хуков...
Колобок , посмотри на себя, куда ты катишься ?
Re[2]: Горячие клавишы
От: kol_bok  
Дата: 27.10.03 15:50
Оценка:
Здравствуйте, kol_bok, Вы писали:

_>Здравствуйте, _sergius_, Вы писали:


__>>Как реализовать горячие клавиши, если нет главного окна (например если это служба)?



_>Попробуй DirectInput , только не будет работать на голой 95-й винде ( без DX) на остальных будет.

_>Зато никаких жуков хуков...

Кстати в 95-м помоему как раз служб то и нету...
а на NT directx присутствует начиная с NT4.0 (DirectX 3)
Колобок , посмотри на себя, куда ты катишься ?
Re[2]: Горячие клавишы
От: Блудов Павел Россия  
Дата: 28.10.03 03:47
Оценка:
Здравствуйте, kol_bok, Вы писали:

_>Попробуй DirectInput , только не будет работать на голой 95-й винде ( без DX) на остальных будет.

_>Зато никаких жуков хуков...

Ну конечно . DirectInput он direct только для джойстиков.

Для мышки и клавы это и есть SetWindowsHookEx(WH_KEYBOARD_LL/WH_MOUSE_LL)
И в 100% случаев это будет проще. Сампл есть в MSDN, ищите

"Using Windows XP Visual Styles and PrintWindow in Windows Applications"

Павел.
Re[3]: Горячие клавишы
От: alexandrov_alex США  
Дата: 28.10.03 06:23
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

БП>

БП> Ну конечно . DirectInput он direct только для джойстиков.
БП>
БП> Для мышки и клавы это и есть
БП> SetWindowsHookEx(WH_KEYBOARD_LL/WH_MOUSE_LL) И в 100% случаев это будет
БП> проще. Сампл есть в MSDN, ищите
БП>
БП> "Using Windows XP Visual Styles and PrintWindow in Windows
БП> Applications"

Так а все-таки: чем RegisterHotKey не устраивает?

-- Всего хорошего!
-- Alex Alexandrov, e-mail: alex_alexandrov@fromru.com
Posted via RSDN NNTP Server 1.8 beta
It's kind of fun to do the impossible (Walt Disney)
Re[4]: Горячие клавишы
От: _sergius_ Украина  
Дата: 28.10.03 09:26
Оценка: -1
Здравствуйте, alexandrov_alex, Вы писали:

_>Так а все-таки: чем RegisterHotKey не устраивает?


_>-- Всего хорошего!

_>-- Alex Alexandrov, e-mail: alex_alexandrov@fromru.com

Потому что в RegisterHotKey первый параметр хэндл окна, а у меня нет окна (служба)
Re[2]: Горячие клавишы
От: _sergius_ Украина  
Дата: 28.10.03 09:28
Оценка:
Здравствуйте, antx, Вы писали:

A>Здравствуйте, _sergius_, Вы писали:


__>>Как реализовать горячие клавиши, если нет главного окна (например если это служба)?


A>хук поставить)


Хук не подходит, так как кроме моего exe больше ничего не должно быть. А для того чтобы поставить хук (глобальный) нужна еще dll'ка
Re[3]: Горячие клавишы
От: kol_bok  
Дата: 28.10.03 09:37
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

БП>Здравствуйте, kol_bok, Вы писали:


_>>Попробуй DirectInput , только не будет работать на голой 95-й винде ( без DX) на остальных будет.

_>>Зато никаких жуков хуков...

БП>Ну конечно . DirectInput он direct только для джойстиков.


Бжди...а как же GetKeyboardState и GetMouse...
Сам юзал, работает и для клавы и мыши...совсем немного инициализации + децл кода в результате имеем
в любой момент времени массив состояния всех кнопок клавы ( нажата или отжата ) ...
потом проверяем
if (KeyStates[DIK_F1]>0)and(KeyStates[DIK_CTRLLEFT]>0) then
MakeSex();


БП>Для мышки и клавы это и есть SetWindowsHookEx(WH_KEYBOARD_LL/WH_MOUSE_LL)

БП>И в 100% случаев это будет проще. Сампл есть в MSDN, ищите

БП>"Using Windows XP Visual Styles and PrintWindow in Windows Applications"


БП>Павел.
Колобок , посмотри на себя, куда ты катишься ?
Re[5]: Горячие клавишы
От: alexandrov_alex США  
Дата: 28.10.03 11:24
Оценка:
Здравствуйте, _sergius_, Вы писали:

s> Потому что в RegisterHotKey первый параметр хэндл окна, а у меня нет

s> окна (служба)

Вы меня удивляете, молодой человек. Вы документацию как читаете?

hWnd
[in] Handle to the window that will receive WM_HOTKEY messages generated by the hot key. If this parameter is NULL, WM_HOTKEY messages are posted to the message queue of the calling thread and must be processed in the message loop.


Кто же мешает отдать NULL в качестве дескриптора и ловить сообщения с hWnd равным NULL? Я не хочу сказать, что я так делал, но должно работать. Другое дело, что вообще пытаться управлять сервисом непосредственно с клавиатуры является в корне неверным подходом, но это уже как-то обсуждалось, повторяться не буду.

-- Всего хорошего!
-- Alex Alexandrov, e-mail: alex_alexandrov@fromru.com
Posted via RSDN NNTP Server 1.8 beta
It's kind of fun to do the impossible (Walt Disney)
Re: Холодные клавишы
От: kol_bok  
Дата: 28.10.03 11:40
Оценка:
Здравствуйте, _sergius_, Вы писали:

__>Как реализовать горячие клавиши, если нет главного окна (например если это служба)?


Почему нету термина Холодные Клавиши...для любой сущности должно существовать анти...

Предлагаю Холодными Клавишами назвать клавиши или сочетание нажатие которых не обрабатывается ни одной программой.\
Колобок , посмотри на себя, куда ты катишься ?
Re[2]: Холодные клавишы
От: Блудов Павел Россия  
Дата: 29.10.03 04:22
Оценка:
Здравствуйте, kol_bok, Вы писали:

_>Предлагаю Холодными Клавишами назвать клавиши или сочетание нажатие которых не обрабатывается ни одной программой.\


У меня на клаве есть такая. Справа от индикаторов. Нп ней нарисован треугольник.
Ни одна прога не обрабатывает. Хотя хуком нажатия отлавливаются. Сканкод 0х00.
Re[3]: Горячие клавишы
От: Блудов Павел Россия  
Дата: 29.10.03 04:25
Оценка:
Здравствуйте, _sergius_, Вы писали:

__>Хук не подходит, так как кроме моего exe больше ничего не должно быть. А для того чтобы поставить хук (глобальный) нужна еще dll'ка


Только не для WH_KEYBOARD_LL и WH_MOUSE_LL. Для них нужно только чтобы нить их поставившая имела
цикл выборки сообщений. Как, впрочем, и для ::RegisterHotKey().

Так что Федотов правее всех правых.
Павел.
Re[4]: Горячие клавишы
От: Блудов Павел Россия  
Дата: 29.10.03 04:27
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

БП>Так что Федотов правее всех правых.


Сорри, Я конечно имел ввиду Александрова.
Просто опечатался.
Re[6]: Горячие клавишы
От: _sergius_ Украина  
Дата: 29.10.03 10:25
Оценка:
Здравствуйте, alexandrov_alex, Вы писали:

_>Вы меня удивляете, молодой человек. Вы документацию как читаете?


_>

_>hWnd
_>[in] Handle to the window that will receive WM_HOTKEY messages generated by the hot key. If this parameter is NULL, WM_HOTKEY messages are posted to the message queue of the calling thread and must be processed in the message loop.


_>Кто же мешает отдать NULL в качестве дескриптора и ловить сообщения с hWnd равным NULL? Я не хочу сказать, что я так делал, но должно работать. Другое дело, что вообще пытаться управлять сервисом непосредственно с клавиатуры является в корне неверным подходом, но это уже как-то обсуждалось, повторяться не буду.


Вы меня тоже удивляете . Вы всегда верите тому что написано в MSDN? Могу привести массу примеров, когда написанное не отвечает реальности.
Так вот, если не знаете, то лучше не говорите, а попробуйте на практике. Говорить все умеют.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.