15,471
社区成员
发帖
与我相关
我的任务
分享
#define DllTestAPI extern "C" __declspec(dllexport)
#include "hookDLL.h"
#include <windows.h>
#include <iostream>
using namespace std;
#pragma data_seg("ShareData")
HHOOK hk = NULL;
HINSTANCE hModule = NULL;
#pragma data_seg
#pragma comment(linker,"/section:ShareData,RWS")
LRESULT CALLBACK HookFun(int code, WPARAM wParam, LPARAM lParam)
{
printf("hookfun\n");
return CallNextHookEx(hk, code, wParam, lParam);
}
BOOL WINAPI DllMain(_In_ void * _HDllHandle, _In_ unsigned _Reason, _In_opt_ void * _Reserved)
{
switch(_Reason)
{
case DLL_PROCESS_ATTACH:
{
cout<<"DLL_PROCESS_ATTACH"<<endl;
if (hModule == NULL)
{
hModule = (HINSTANCE)_HDllHandle;
}
break;
}
case DLL_PROCESS_DETACH:
{
cout<<"DLL_PROCESS_DETACH"<<endl;
break;
}
case DLL_THREAD_ATTACH:
{
cout<<"DLL_THREAD_ATTACH"<<endl;
break;
}
case DLL_THREAD_DETACH:
{
cout<<"DLL_THREAD_DETACH"<<endl;
break;
}
}
return TRUE;
}
bool HookProcess(int threadId)
{
hk = SetWindowsHookEx(WH_MOUSE, HookFun, hModule, threadId);
return hk != NULL;
}
#include <windows.h>
#include <iostream>
#include "..\\hookDLL\\hookDLL.h"
using namespace std;
#pragma comment(lib,"..\\hookDLL\\Debug\\hookDLL.lib")
int main()
{
HWND hwnd = FindWindow(TEXT("wnd1"), TEXT("Icon Demo"));
if (hwnd != NULL)
{
int threadId;
GetWindowThreadProcessId(hwnd, (LPDWORD)&threadId);
if(HookProcess(threadId) == false)
{
cout<<"failed"<<endl;
}
}
return 0;
}