使用Twebbrowser访问并登录网站http://bbs.dedecms.com,用如下代码获取不了COOKIES,改成用InternetGetCookie,也不行,请各位朋友帮忙试一下,找出原因。procedure TFrm_webview.webDocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
Cookieview.Text:=(web.document as ihtmldocument2).cookie;
end;
const pDisp: IDispatch; var URL: OleVariant);
begin
Cookieview.Text:=(web.document as ihtmldocument2).cookie;
end;
解决方案 »
- form2 继承 form1 ,,form2的大小也和form1一样大了 可以不一样大么??
- delphi6的cdkey谁有啊?
- panel的问题,会的快帮忙.
- string“98”变成string“000098”提问~~~~
- 收到一封CSDN发给我的邮件~~~
- 中国式报表(ereport)控件的小BUG,哪位大侠能帮助解决???
- 500分求助:大型系统(大约80K代码)程序设计框架?
- 500分求一条比较麻烦的SQL语句,大家帮帮忙吧。
- Delphi如何释放DLL
- 谁知道如何读取WORD中的内容啊?
- 高分求解。有谁用过ImageEn中的ImageEnMView控件,如何让图片不在一行显示
- 有3D游戏开发高手吗? 能不能传授一下经验。
Cookie 8017a_lastvisit=0%091228722707%09%2Fck.php%3F; 8017a_lastpos=other
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, StdCtrls,ActiveX,mshtml;type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Memo1: TMemo;
Edit1: TEdit;
Button3: TButton;
procedure WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
memo1.Lines.Text:=(WebBrowser1.document as ihtmldocument2).cookie;end;procedure TForm1.Button3Click(Sender: TObject);
begin
WebBrowser1.Navigate(EDIT1.Text);
end;end.
const pDisp: IDispatch; var URL: OleVariant);
begin
if web.LocationURL=URL then
Cookieview.Text:=(web.document as ihtmldocument2).cookie;
end;这样就能保证是在页面完全打开后才取cookie了
不知是什么原因。
但是,现在问题是用InternetGetCookie和TWEBBROWSER没有取到,寻找解决方法
注意头部要加上mshtml 连接我就简单说一下吧
按钮
WebBrowser1.Navigate(Edit1.Text); 在webbrowser1的DocumentComplete事件中加入以下代码 ---取cookie值
Doc:=WebBrowser1.Document as IHTMLDocument2; //获得 一个IHTMLDocument2对象
edit2.Text:=Doc.cookie; //Doc.cookie就是页面COOKIE信息了 在webbrowser1的ProgressChange事件中加入以下代码
if WebBrowser1.LocationURL <> 'about:blank' then
edit1.Text := WebBrowser1.LocationURL //请注意此处为地址栏,当你点击其他页面的时候也要让他跟着变
else //要不然当你想修改COOKIE的时候会发现无法修改
Edit1.Text := '';
修改COOKIE按钮一个
在按钮中声明一个SList: TStrings;
然后在begin和end插入
if Edit2.Text = '' then Exit;
SList := TStringList.Create; {修改浏览器的Cookies}
Slist.CommaText := Edit2.Text;
for i := 0 to SList.Count - 1 do {将Cookies分段提交给浏览器}
Doc.cookie := SList.Strings[i];
Webbrowser1.Refresh; {修改后Cookies后刷新浏览器}
SList.Free; {释放}
{
string cookieName = null;
int size = 5000;
StringBuilder sb = new StringBuilder(size); // 要指定容量,大于Cookie就可以,否则读取不全
InternetGetCookie(url, cookieName, sb, ref size);
string cookie = sb.ToString();
return cookie;
}我也试了你那个网站,也提不到cookies,但其它网站都是可以的
var
cookbuffer:array[0..1023] of char;
Size : Dword;
begin
InternetGetCookie(pchar('http://tieba.baidu.com/'),pchar('BAIDUID'),cookbuffer,size);
result := cookbuffer;
end;调用var
str : string;
begin
str := GetCookie(); //必要的
idhttp1.Request.CustomHeaders.Text := 'Cookie: '+str;
Memo1.Text := idhttp1.Get('http://bbs.dedecms.com');
end;
DO{
SUCCESS=CHTTPFILE::QueryInfo(HTTP_QUERY_SET_COOKIE,cookie.GetBuffer(),&dwbuflen,&dwval);
}WHILE(SUCCESS)
完全可以读出!!欢迎交流!