我正在嘗試一些概念測試,以更改Logitech MS3200鍵盤的功能之一(縮放功能)。我有從縮放控制發送的鍵。所以,我有一個主應用程序和一個包含鉤子程序的dll。如何從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;
}
我需要能夠從DLL訪問什麼由調用SetWindowsHookEx(HHOOK)返回,在爲了調用CallNextHookEx()。
是有道理的。謝謝 – scottm 2009-01-30 22:02:55