Страница: 1 |
Вопрос: &n | Добавлено: 07.04.08 00:24 |
Автор вопроса: ![]() |
Я знаю что ни кто не ответит на этот вопрос, но всё же надежда умерает последней:
Как отследить на клавиатуре: 1.Громче (+) 2.Тише (-) Как отследить на джойстике: 1 и Последнее. ВСЕ КНОПКИ!!! |
Ответы | Всего ответов: 8 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() Вопросов: 32 Ответов: 167 |
Профиль | Цитата | #1 | Добавлено: 07.04.08 00:25 |
Вопрос: &n
Поскольку   - эт пробел..................... Сори ![]() |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 8068014 Вопросов: 18 Ответов: 817 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 07.04.08 00:27 |
на клаве - SetWindowsHookEx или
direct input (джойстик тока через directinput) |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() Вопросов: 32 Ответов: 167 |
Профиль | Цитата | #3 | Добавлено: 07.04.08 00:32 |
Api (Я обречон!)
Короче можно я не буду неделю юзать апи, и добрый дядя Ra$cal просветит меня как SetWindowsHookEx, а главное directinput пользоваться... |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 8068014 Вопросов: 18 Ответов: 817 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 07.04.08 00:37 |
ну SetWindowsHookEx - никаг. длл должна быть настоящей, а не актив икс. поэтому васик не катит. а direct input - есть куча туториалов.
мб покатит GetAsyncKeyState, но не уверен. это только для клавы. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 2795 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 07.04.08 02:10 |
неужели _простым_ способом можно отследить нестандартные клавиши. уверен, что нет |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 8068014 Вопросов: 18 Ответов: 817 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 07.04.08 03:26 |
на своей клавиатуре наблюдал - мультимедиа кнопки имеют вполне обычные виртуальные коды. даже планировал написать нормальную утилиту, вместо дефолтной паленой от genius. теперь еще и для мыши нада писать - там не учитывается, в каком окне нажимаются доп клавиши (дрова для мышек от майкрософт в этом смысле гораздо разумнее). правда с мышом сложнее - я еще не особо копался, как там идет работа с кнопками. а вот джойстик идет лесом - только direct input |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 8068014 Вопросов: 18 Ответов: 817 |
Web-сайт: Профиль | Цитата | #7 | Добавлено: 07.04.08 03:40 |
проверил. сгодится обычный глобальный хук на сообщения мыша. XBUTTON1 и XBUTTON2 - это доп кнопки на мыше ![]() http://www.codeproject.com/KB/wtl/WTLAppButtons.aspx основы можно тут поглядеть ![]() |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Лидер форума ICQ: 216865379 Вопросов: 106 Ответов: 9979 |
Web-сайт: Профиль | Цитата | #8 | Добавлено: 07.04.08 05:36 |
Проверил для мультимедиа-кнопок, вполне нормально ловятся через SetWindowsHookEx/WM_KEYBOARD, wParam в их случае равен 0xAF для "громче" и 0xAE для "тише".
Инжектор: #include <windows.h>
int ShowError(LPWSTR msg){ MessageBox(0, msg, TEXT("Error" ![]() return -1; } int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR, int){ HMODULE hMod = LoadLibrary(TEXT("dllhook.dll" ![]() if(!hMod){ MessageBox(0, TEXT("Can't load dllhook.dll" ![]() ![]() return -1; } FARPROC pHook = GetProcAddress(hMod, "HookProc" ![]() if(pHook == NULL){ MessageBox(0, TEXT("Can't get HookProc address" ![]() ![]() FreeLibrary(hMod); return -1; } HHOOK hhk = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)pHook, hMod, 0); Sleep(60000); UnhookWindowsHookEx(hhk); FreeLibrary(hMod); return 0; } DLL: #include <windows.h>
#include <string> using namespace std; BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved){ return TRUE; } BOOL CALLBACK WndEnumProc(HWND hWnd, LPARAM lParam){ wchar_t buff[256]; GetClassName(hWnd, buff, 255); wstring cn = wstring(buff); if(cn == TEXT("Edit" ![]() LRESULT res = SendMessage(hWnd, WM_SETTEXT, NULL, lParam); return FALSE; } return TRUE; } LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam){ if(nCode < 0){ // do not process message return CallNextHookEx(NULL, nCode, wParam, lParam); } wchar_t buff[256]; wstring key; wsprintf(buff, TEXT("wParam = %08X; lParam = %08X" ![]() key += buff; if(wParam == 0xAF){ key = TEXT("Ты увеличил громкость." ![]() } else if(wParam == 0xAE){ key = TEXT("Уменьшил громкость." ![]() } HWND hWnd = FindWindow(NULL, TEXT("Untitled - Notepad" ![]() EnumChildWindows(hWnd, WndEnumProc, (LPARAM)key.c_str()); return CallNextHookEx(NULL, nCode, wParam, lParam); } Для использования запустить параллельно Блокнот ![]() |
Страница: 1 |
|