Я пытаюсь провести небольшой концептуальный тест, чтобы изменить одну из функций клавиатуры Logitech MS3200 (функция масштабирования). У меня есть ключи, которые отправляются из управления масштабированием. Итак, у меня есть основное приложение и DLL, которая содержит процедуру подключения.
Вот основное приложение:
#include <stdio.h>
#include <windows.h>
HANDLE hHook;
int main()
{
HINSTANCE hMod = GetModuleHandle(NULL);
hHook = SetWindowsHookEx(WH_KEYBOARD, HookProc,0,0);
if(hHook == NULL)
printf("Unable to set hook! Error: %d", GetLastError());
else
printf("Hook set successfully!");
while(TRUE)
{
Sleep(1000);
}
return 0;
}
А вот процедура подключения DLL:
#include <windows.h>
int __declspec (dllexport) HookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode < 0)
{
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
if(wParam == VK_ADD || wParam == VK_SUBTRACT)
{
short status = GetKeyState(VK_CONTROL);
if(status == 1)
{
if(wParam == VK_ADD)
wParam = VK_UP;
else
wParam = VK_DOWN;
}
}
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
int WINAPI dllmain(HINSTANCE hMod, DWORD data, LPVOID lpVOid)
{
return 0;
}
Мне нужно иметь доступ к тому, что возвращает SetWindowsHookEx (hHook) из библиотеки DLL, чтобы вызвать CallNextHookEx ().