有些朋友说到可以试一下用idhttp
但是使用IdHTTP1.Post 无法在论坛发帖页面中用postList.Add('message=123456');赋值(postList为Tstringlist)
之后还是用回webbrowser小妹已经将登录和发帖弄好了
但是上传附件好像需要给attachbody里的attach_1赋值手动赋值前
<TR>
<TH><INPUT id=attach_2 type=file name=attach[] unselectable="on"> <SPAN id=localfile_2></SPAN><INPUT value=2 type=hidden name=localid[]> </TH>
<TD><INPUT size=25 name=attachdesc[]></TD></TR>手动赋值后
<TR>
<TH><INPUT style="DISPLAY: none" id=attach_1 value=C:\fakepath\Unit1.pas type=file name=attach[] unselectable="on"> <SPAN id=localfile_1><A onclick=delAttach (1) href="http://failforum.net/forum/post.php?action=edit&fid=10&tid=1163267&pid=11653796&page=1&extra=page=1###delAttach" > [删除]</A> <A title=点击这里将本附件插入帖子内容中当前光标的位置onclick="insertAttachtext(1);return false;" href="http://failforum.net/forum/ post.php?action=edit& amp;amp;fid=10&tid=1163267&pid=11653796&page=1& amp;amp;extra=page=1###insertAttach">[插入]</A> <SPAN class=smalltxt>[1 ]</SPAN> Unit1.pas</SPAN><INPUT value=1 type=hidden name=localid[]> </TH>
<TD><INPUT size=25 name=attachdesc[]></TD></TR>问题是使用
WebBrowser1.OleObject.document.getElementByID('attach_1').value := 'c:\123.txt';
给attach_1赋值根本没有反应
请各位朋友指点下。谢谢!
代码文件:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SHDocVw, StdCtrls, OleCtrls;type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Memo1: TMemo;
Button6: TButton;
Button7: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
WebBrowser1: TWebBrowser;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);//到论坛首页
begin
WebBrowser1.Navigate('http://failforum.net/forum/index.php')
end;procedure TForm1.Button2Click(Sender: TObject);//登录论坛
begin
WebBrowser1.OleObject.document.all.item('username').value := 'csdn';
WebBrowser1.OleObject.document.all.item('password').value := 'csdn';
WebBrowser1.OleObject.document.getElementByID('userlogin').click;
end;procedure TForm1.Button3Click(Sender: TObject);//到编辑帖子页面
begin
WebBrowser1.Navigate('http://failforum.net/forum/post.php?action=edit&fid=10&tid=1163267&pid=11653796&page=1&extra=page%3D1');
end;procedure TForm1.Button4Click(Sender: TObject);//编辑帖子并提交
begin
WebBrowser1.OleObject.document.getElementByID('bbcodemode').click;
WebBrowser1.OleObject.document.all.item('message').value := '+1 need explaination..........';
WebBrowser1.OleObject.document.getElementByID('postsubmit').click;
end;procedure TForm1.Button5Click(Sender: TObject);//调用addAttach() 函数
begin
WebBrowser1.OleObject.Document.parentWindow.execScript('addAttach()', 'JavaScript');
end;procedure TForm1.FormCreate(Sender: TObject);//禁止报错
begin
WebBrowser1.Silent := True;
end;procedure TForm1.Button6Click(Sender: TObject);//返回attachbody的html code
begin
Memo1.Lines.Text := WebBrowser1.OleObject.document.getElementByID('attachbody').innerhtml;
end;procedure TForm1.Button7Click(Sender: TObject);//返回整个html code
begin
Memo1.Lines.Text := (WebBrowser1.OleObject.document.body.outerHTML);
end;end.窗体文件:
object Form1: TForm1
Left = 305
Top = 331
Width = 1142
Height = 656
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object WebBrowser1: TWebBrowser
Left = 8
Top = 8
Width = 1113
Height = 417
TabOrder = 0
ControlData = {
4C00000008730000192B00000000000000000000000000000000000000000000
000000004C000000000000000000000001000000E0D057007335CF11AE690800
2B2E126208000000000000004C0000000114020000000000C000000000000046
8000000000000000000000000000000000000000000000000000000000000000
00000000000000000100000000000000000000000000000000000000}
end
object Button1: TButton
Left = 8
Top = 584
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 1
OnClick = Button1Click
end
object Button2: TButton
Left = 96
Top = 584
Width = 75
Height = 25
Caption = 'Button2'
TabOrder = 2
OnClick = Button2Click
end
object Button3: TButton
Left = 184
Top = 584
Width = 75
Height = 25
Caption = 'Button3'
TabOrder = 3
OnClick = Button3Click
end
object Button4: TButton
Left = 272
Top = 584
Width = 75
Height = 25
Caption = 'Button4'
TabOrder = 4
OnClick = Button4Click
end
object Button5: TButton
Left = 360
Top = 584
Width = 75
Height = 25
Caption = 'Button5'
TabOrder = 5
OnClick = Button5Click
end
object Memo1: TMemo
Left = 8
Top = 440
Width = 1113
Height = 129
ImeName = '中文 (繁体) - 美式键盘'
Lines.Strings = (
'Memo1')
TabOrder = 6
end
object Button6: TButton
Left = 448
Top = 584
Width = 75
Height = 25
Caption = 'Button6'
TabOrder = 7
OnClick = Button6Click
end
object Button7: TButton
Left = 536
Top = 584
Width = 75
Height = 25
Caption = 'Button7'
TabOrder = 8
OnClick = Button7Click
end
end
但是使用IdHTTP1.Post 无法在论坛发帖页面中用postList.Add('message=123456');赋值(postList为Tstringlist)
之后还是用回webbrowser小妹已经将登录和发帖弄好了
但是上传附件好像需要给attachbody里的attach_1赋值手动赋值前
<TR>
<TH><INPUT id=attach_2 type=file name=attach[] unselectable="on"> <SPAN id=localfile_2></SPAN><INPUT value=2 type=hidden name=localid[]> </TH>
<TD><INPUT size=25 name=attachdesc[]></TD></TR>手动赋值后
<TR>
<TH><INPUT style="DISPLAY: none" id=attach_1 value=C:\fakepath\Unit1.pas type=file name=attach[] unselectable="on"> <SPAN id=localfile_1><A onclick=delAttach (1) href="http://failforum.net/forum/post.php?action=edit&fid=10&tid=1163267&pid=11653796&page=1&extra=page=1###delAttach" > [删除]</A> <A title=点击这里将本附件插入帖子内容中当前光标的位置onclick="insertAttachtext(1);return false;" href="http://failforum.net/forum/ post.php?action=edit& amp;amp;fid=10&tid=1163267&pid=11653796&page=1& amp;amp;extra=page=1###insertAttach">[插入]</A> <SPAN class=smalltxt>[1 ]</SPAN> Unit1.pas</SPAN><INPUT value=1 type=hidden name=localid[]> </TH>
<TD><INPUT size=25 name=attachdesc[]></TD></TR>问题是使用
WebBrowser1.OleObject.document.getElementByID('attach_1').value := 'c:\123.txt';
给attach_1赋值根本没有反应
请各位朋友指点下。谢谢!
代码文件:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SHDocVw, StdCtrls, OleCtrls;type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Memo1: TMemo;
Button6: TButton;
Button7: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
WebBrowser1: TWebBrowser;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);//到论坛首页
begin
WebBrowser1.Navigate('http://failforum.net/forum/index.php')
end;procedure TForm1.Button2Click(Sender: TObject);//登录论坛
begin
WebBrowser1.OleObject.document.all.item('username').value := 'csdn';
WebBrowser1.OleObject.document.all.item('password').value := 'csdn';
WebBrowser1.OleObject.document.getElementByID('userlogin').click;
end;procedure TForm1.Button3Click(Sender: TObject);//到编辑帖子页面
begin
WebBrowser1.Navigate('http://failforum.net/forum/post.php?action=edit&fid=10&tid=1163267&pid=11653796&page=1&extra=page%3D1');
end;procedure TForm1.Button4Click(Sender: TObject);//编辑帖子并提交
begin
WebBrowser1.OleObject.document.getElementByID('bbcodemode').click;
WebBrowser1.OleObject.document.all.item('message').value := '+1 need explaination..........';
WebBrowser1.OleObject.document.getElementByID('postsubmit').click;
end;procedure TForm1.Button5Click(Sender: TObject);//调用addAttach() 函数
begin
WebBrowser1.OleObject.Document.parentWindow.execScript('addAttach()', 'JavaScript');
end;procedure TForm1.FormCreate(Sender: TObject);//禁止报错
begin
WebBrowser1.Silent := True;
end;procedure TForm1.Button6Click(Sender: TObject);//返回attachbody的html code
begin
Memo1.Lines.Text := WebBrowser1.OleObject.document.getElementByID('attachbody').innerhtml;
end;procedure TForm1.Button7Click(Sender: TObject);//返回整个html code
begin
Memo1.Lines.Text := (WebBrowser1.OleObject.document.body.outerHTML);
end;end.窗体文件:
object Form1: TForm1
Left = 305
Top = 331
Width = 1142
Height = 656
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object WebBrowser1: TWebBrowser
Left = 8
Top = 8
Width = 1113
Height = 417
TabOrder = 0
ControlData = {
4C00000008730000192B00000000000000000000000000000000000000000000
000000004C000000000000000000000001000000E0D057007335CF11AE690800
2B2E126208000000000000004C0000000114020000000000C000000000000046
8000000000000000000000000000000000000000000000000000000000000000
00000000000000000100000000000000000000000000000000000000}
end
object Button1: TButton
Left = 8
Top = 584
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 1
OnClick = Button1Click
end
object Button2: TButton
Left = 96
Top = 584
Width = 75
Height = 25
Caption = 'Button2'
TabOrder = 2
OnClick = Button2Click
end
object Button3: TButton
Left = 184
Top = 584
Width = 75
Height = 25
Caption = 'Button3'
TabOrder = 3
OnClick = Button3Click
end
object Button4: TButton
Left = 272
Top = 584
Width = 75
Height = 25
Caption = 'Button4'
TabOrder = 4
OnClick = Button4Click
end
object Button5: TButton
Left = 360
Top = 584
Width = 75
Height = 25
Caption = 'Button5'
TabOrder = 5
OnClick = Button5Click
end
object Memo1: TMemo
Left = 8
Top = 440
Width = 1113
Height = 129
ImeName = '中文 (繁体) - 美式键盘'
Lines.Strings = (
'Memo1')
TabOrder = 6
end
object Button6: TButton
Left = 448
Top = 584
Width = 75
Height = 25
Caption = 'Button6'
TabOrder = 7
OnClick = Button6Click
end
object Button7: TButton
Left = 536
Top = 584
Width = 75
Height = 25
Caption = 'Button7'
TabOrder = 8
OnClick = Button7Click
end
end
解决方案 »
- 菜鸟再问一个关系数据库记录复制的问题!
- 隐藏进程时遇到的奇怪问题
- [抢分贴]一年一度的4.1到了
- DBGrid中或DBGridEh中如何根据数据表某字段的值设定某字段单元格的颜色。
- 兄弟我现在改行搞传统的邮政商业信函业务!给点建议!来者有分!
- 如何建立多进程呢?请教,在线等!
- 现在工作比较闲,希望自己做个共享软件,大家给个方向。
- 如何把DELPHI中的DBGRID控件中的数据倒入EXCEL制作报表
- 本站持续开通了编程书藉下载并且新增大软件下载及电影下载,有兴趣的进来看看
- 出售CICQ源码!(delphi编写)
- 在ACCESS 中 数据类型用 是/否 如何默认为打勾
- 你学编程都彻底弄明白了这些吗?
如果支持对input file赋值,那么用户的安全将受到威胁据我所知有三种解决方案:
1、直接走http协议,放弃使用WebBrowser
2、模拟鼠标键盘,操作文件对话框(得考虑IE不同的版本)
3、设置FormToMultipartPostData,参考:http://www.codeproject.com/KB/aspnet/set-webbrowser-file-input.aspx更多信息搜索:“WebBrowser input file setting”
.
.
postList := TStringList.Create;
.
.
.
postList.Add('parseurloff=1');
postList.Add('smileyoff=1');
postList.Add('bbcodeoff=1');
postList.Add('usesig=1');
postList.Add('emailnotify=1');
postList.Add('bbcodemode=Discuz! 代码模式');
postList.Add('subject=thank you for sharing');
postList.Add('message=thank you for sharing');
postList.add('replysubmit=发表帖子');
s2 := IdHTTP1.Post(LoginUrl2,postList);如果直接走http协议
绿色那行根本无法为message赋值
有些网友说过那个message是属于textarea
不可以用postList.add直接赋值
有朋友知道解决方法吗?
如果支持对input file赋值,那么用户的安全将受到威胁据我所知有三种解决方案:
1、直接走http协议,放弃使用WebBrowser
2、模拟鼠标键盘,操作文件对话框(得考虑IE不同的版本)
3、设置FormToMultipartPostData,参考:http://www.codeproject.com/KB/aspnet/set-webbrowser-file-input.aspx更多信息搜索:“WebBrowser input file setting”
模拟键盘操作不稳定,而且在IE8里面已经被禁用了