Здравствуйте, _sergius_, Вы писали:
s> _>Кто же мешает отдать NULL в качестве дескриптора и ловить сообщения с
s> hWnd равным NULL? Я не хочу сказать, что я так делал, но должно
s> работать. Другое дело, что вообще пытаться управлять сервисом
s> непосредственно с клавиатуры является в корне неверным подходом, но это
s> уже как-то обсуждалось, повторяться не буду.
s>
s> Вы меня тоже удивляете
. Вы всегда верите тому что написано в MSDN?
s> Могу привести массу примеров, когда написанное не отвечает реальности.
s> Так вот, если не знаете, то лучше не говорите, а попробуйте на практике.
s> Говорить все умеют.
Ты груб и не в тему. Уж поверь, я умею не только говорить. MSDN я склонен скорее верить, чем нет. Потому что в основном там написана правда. А те, кто ехидно радуется, найдя ошибку в документации от Microsoft, видимо, сами никогда ничего не писали.
P.S. Специально для тебя:
#include "stdafx.h"
#include <windows.h>
#include <atlbase.h>
#define JOB_HOTKEY_ID 0
#define QUIT_HOTKEY_ID 1
int main(int argc, char* argv[])
{
BOOLEAN br;
MSG theMsg;
br = RegisterHotKey(NULL, JOB_HOTKEY_ID, MOD_WIN, 'S');
ATLASSERT(br);
br = RegisterHotKey(NULL, QUIT_HOTKEY_ID, MOD_WIN, 'Q');
ATLASSERT(br);
_tprintf(_T("Press Win+S to make the job, Win+Q to quit.\n"));
while(GetMessage(&theMsg, NULL, 0, 0)) {
if (theMsg.message = WM_HOTKEY && theMsg.wParam == JOB_HOTKEY_ID) {
printf("The job is done!!!\n");
}
if (theMsg.message = WM_HOTKEY && theMsg.wParam == QUIT_HOTKEY_ID) {
printf("Quitting app...\n");
PostQuitMessage(0);
}
}
UnregisterHotKey(NULL, QUIT_HOTKEY_ID);
UnregisterHotKey(NULL, JOB_HOTKEY_ID);
return 0;
}
Код был протестирован на XP, 98. Все работает. И DirectInput тут на фиг не нужен...
-- Всего хорошего!
-- Alex Alexandrov, e-mail: alex_alexandrov@fromru.com
Posted via RSDN NNTP Server 1.8 beta