5,388
社区成员
发帖
与我相关
我的任务
分享
//枚举组件,这个不是淘宝的,我找到的是'ATL:Edit',你用spy++查一下
function EnumChildProc(
hwnd: HWND;
lParam: LPARAM
): BOOL; stdcall;
var
vBuffer: array[0..255] of Char;
begin
PInteger(lParam)^ := 0;
GetClassName(hwnd, vBuffer, SizeOf(vBuffer));
if SameText( 'ATL:Edit', vBuffer) then
begin
PInteger(lParam)^ := hwnd;
Result := False;
end else Result := True;
end;
//发送字符
procedure TfrmMain.SendText(s: string);
var
I: Integer;
vHandle: THandle;
begin
vHandle := WebBrowser1.Handle;
if vHandle = 0 then Exit;
EnumChildWindows(vHandle, @EnumChildProc, Integer(@vHandle));
if vHandle = 0 then Exit;
for I := 1 to Length(S) do
SendMessage(vHandle, WM_CHAR, Ord(S[I]), 0);
end;
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, StdCtrls; type TForm1 = class(TForm) mmo1: TMemo; btn1: TButton; IdHTTP1: TIdHTTP; Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btn1Click(Sender: TObject);var code: string; done: Boolean; postList: TStrings; Response: TStringStream;begin mmo1.clear; // 开始登录代码 Response := TStringStream.Create('', TEncoding.UTF8); postList := TStringList.Create; try IdHTTP1.HandleRedirects := True; postList.add('cktime=31536000'); postList.add('forward='); postList.add('hideid=0'); postList.add('jumpurl=http://bbs.hualongxiang.com/index.php'); postList.add('lgt=0'); postList.add('pwpwd='+edit2.Text ); postList.add('pwuser='+edit1.Text ); postList.add('step=2'); postList.add('submit=¼'); IdHTTP1.Post('http://bbs.hualongxiang.com/login.php?', postList, Response); done := True; except done := false; end; if (done) and (Pos('200 OK', IdHTTP1.ResponseText) <> 0) then begin code := IdHTTP1.Get('http://bbs.hualongxiang.com/index.php'); mmo1.lines.add(code); end else begin mmo1.lines.add('logon error,error code:' + IdHTTP1.Response.RawHeaders.Text); end; Response.Free; postList.Free; end; end.