Код ниже авторизуется на сайте.
function TForm1.AuthInSite(Ed1,Ed2:String) : Boolean;
var
vWebAddr, vPostData, vFlags, vFrame, vHeaders: OleVariant;
iLoop: Integer;
stPostData: String;
begin
try
vHeaders:= 'Content-Type:application/x-www-form-urlencoded'+ #10#13#0;
stPostData:='uname='+Ed1+'&upass='+Ed2;
vPostData:= VarArrayCreate([0, Length(stPostData)], varByte);
for iLoop := 0 to Length(stPostData)- 1 do
begin
vPostData[iLoop]:= Ord(stPostData[iLoop+1]);
end;
vPostData[Length(stPostData)]:= 0;
vWebAddr:='';
vFlags:=navNoWriteToCache;
vFrame:=2;
try
WebBrowser.Navigate2(vWebAddr,vFlags,vFrame,vPostData,vHeaders);
except
on EVariantError do
MessageDlg('Ошибка', mtError, [mbOK], 0);
end;
Result:=true;
except
Result:=false;
end;
end;
Далее необходимо вытянуть содержимое первого фрейма.
function DataFromFrame(WebBrowser : TWebBrowser) : Boolean;
For i := 0 to WebBrowser.OleObject.Document.frames.Length - 1 do
begin
iw := GetFrame(WebBrowser, i);
AStream := TMemoryStream.Create;
try
IpStream := iw.document as IPersistStreamInit;
if ((Succeeded(IpStream.save(TStreamadapter.Create(AStream), True))) And (i=0)) then
begin
AStream.Seek(0, 0);
sl := TStringList.Create;
sl.LoadFromStream(AStream);
sl.SaveToFile(GetEnvironmentVariable('Temp')+'\'+ ComboBox1.Items.Strings[ListBox1.ItemIndex] + '.txt');
sl.Free;
end;
except
end;
AStream.Free;
end;
end;
end;
Все это работает, но вытягивать содержимое нужно после полной загрузки в WebBrowser'e
Если указать код в такой последовательности:
procedure TForm1.Button1Click(Sender: TObject);
begin
If AuthInSite(Edit1.text,Edit2.text) then
DataFromFrame(WebBrowser);
end;
То данные не выдергиваются, так как страница еще не загрузилась.
Пробовал прописывать выполнение функции DataFromFrame(WebBrowser); в OnDownloadComplete Но данные все равно не вытягиваются. Возможно из-за фреймов (то есть страница загружается, срабатывает OnDownloadComplete, а содержимое фреймов еще загружается)
Не знаю куда дальше рыть, чтобы можно было вытягивать данные фрейма не нажатием кнопки, а стразу после полной загрузки.