Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 没有足够的实际参数?_Delphi_Automation_Iwebbrowser2 - Fatal编程技术网

Delphi 没有足够的实际参数?

Delphi 没有足够的实际参数?,delphi,automation,iwebbrowser2,Delphi,Automation,Iwebbrowser2,以下程序返回错误:e2035第39行和第45行两处的实际参数不足,未编译。有人能帮我吗? 我可以在这里用0或null代替参数吗 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,ComObj,shdocvw,activex, StdCtrls; type TForm1 = class(TForm) Bu

以下程序返回错误:e2035第39行和第45行两处的实际参数不足,未编译。有人能帮我吗? 我可以在这里用0或null代替参数吗

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,ComObj,shdocvw,activex, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
  var
   mybrowser : iwebbrowser2;
  myUserName,
myPassword,loginURL : string;
    Flags: OleVariant;

begin
    Flags :=  navOpenInNewWindow;
     MyBrowser := CreateOleObject('InternetExplorer.Application') as IWebBrowser2;
MyBrowser.Navigate('http://www.gmail.com',flags,'_blank');

myUserName := 'UserName';
myPassword := 'password';
loginURL:='javascript:var Email = document.getElementById(''Email'');Email.value=''' + myUserName + ''';var Password = document.getElementById(''Passwd'');Password.value=''' + myPassword + ''';var SignIn = document.getElementById(''signIn'');SignIn.click();';

MyBrowser.Navigate(loginURL);

end;

end.

您可以在variants.pas上使用任何虚拟变量或EmptyParam变量

MyBrowser.Navigate(loginURL,0,EmptyParam,EmptyParam,EmptyParam);

导航的签名是

    procedure Navigate(const URL: WideString; const Flags: OleVariant;
                   const TargetFrameName: OleVariant; var PostData: OleVariant;
                   const Headers: OleVariant); safecall;
所以你需要更多的参数。有关MSDN的官方文档,请参阅

你可以写

var
  PostData: OleVariant;

PostData := 0;
MyBrowser.Navigate('http://www.gmail.com',flags,'_blank', PostData, 0);
使用TWebBrowser或pass EmptyParam,如Delphi源SHDocVw.pas中的:


呃,第39行是我的密码:=‘密码’;45是一个空行。请您在有问题的行旁发表评论好吗?@Frank Shearr:这是导航调用,需要5个参数,而不是3个或1个参数。仍然无法登录gmail,将登录url替换为:loginURL:='javascript:var Email=document.getElementByIdUsername;Email.value='+myUserName+';var Password=document.getElementByIdPassword;Password.value='+myPassword+';var SignIn=document.getElementByIdsignIn;登录。单击;';请help@omairiqbal:也许WebBrowser只是不接受javascript:URL。毕竟,您的javascript:URL引用了当前加载的文档,但是,就导航过程而言,可能没有活动文档。仍然无法登录到gmail,而将登录URL替换为:loginURL:='javascript:var Email=document.getElementByIdUsername;Email.value='+myUserName+';var Password=document.getElementByIdPassword;Password.value='+myPassword+';var SignIn=document.getElementByIdsignIn;登录。单击;';请help@omair-您以前的loginURL在AFAICS中是正确的,但您必须等待浏览器完成加载,然后才能运行脚本。为什么不使用TWebBrowser,它有一个OnDocumentComplete事件。另外,我不确定您是否能够使用navOpenInNewWindow导航两次,请参阅msdn“IWebBrowser2::navigate Method”页面底部
procedure TWebBrowser.Navigate(const URL: WideString);
begin
  DefaultInterface.Navigate(URL, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
end;

procedure TWebBrowser.Navigate(const URL: WideString; const Flags: OleVariant);
begin
  DefaultInterface.Navigate(URL, Flags, EmptyParam, EmptyParam, EmptyParam);
end;

procedure TWebBrowser.Navigate(const URL: WideString; const Flags: OleVariant;
                               const TargetFrameName: OleVariant);
begin
  DefaultInterface.Navigate(URL, Flags, TargetFrameName, EmptyParam, EmptyParam);
end;

procedure TWebBrowser.Navigate(const URL: WideString; const Flags: OleVariant;
                               const TargetFrameName: OleVariant; var PostData: OleVariant);
begin
  DefaultInterface.Navigate(URL, Flags, TargetFrameName, PostData, EmptyParam);
end;

procedure TWebBrowser.Navigate(const URL: WideString; const Flags: OleVariant;
                               const TargetFrameName: OleVariant; var PostData: OleVariant;
                               const Headers: OleVariant);
begin
  DefaultInterface.Navigate(URL, Flags, TargetFrameName, PostData, Headers);
end;