Inno setup iframe Inno设置(Inno web浏览器)上的控件单击事件

Inno setup iframe Inno设置(Inno web浏览器)上的控件单击事件,inno-setup,Inno Setup,我发现这个名为“inno web browser”的“附加组件”是由论坛用户在这里制作的TLama,这个附加组件非常好,可以完美地打开url,但我需要知道,在我监视点击并因此进行安装或其他操作时,您是否有: URL将是一个 这个文件“ads.php”将生成一个广告:这个广告将是一个共同的横幅(单个图像),它将需要时间,它将在flash中完成,到目前为止还不错 我想知道它是否在下一页iframe(ads.php)充电时有锁定按钮,而下一个按钮只有在用户点击广告(图像或flash)后才会释放 您可以

我发现这个名为“inno web browser”的“附加组件”是由论坛用户在这里制作的TLama,这个附加组件非常好,可以完美地打开url,但我需要知道,在我监视点击并因此进行安装或其他操作时,您是否有:

URL将是一个

这个文件“ads.php”将生成一个广告:这个广告将是一个共同的横幅(单个图像),它将需要时间,它将在flash中完成,到目前为止还不错

我想知道它是否在下一页iframe(ads.php)充电时有锁定按钮,而下一个按钮只有在用户点击广告(图像或flash)后才会释放


您可以这样做吗?

我为web浏览器控件的事件添加了一个事件处理程序。示例脚本现在通过这个新特性进行了扩展。因此,首先获取并使用如下代码。除非用户单击所示StackOverflow站点的“用户”选项卡,否则它将使用浏览器禁用自定义页面上的“下一步”按钮。但是在禁用时要非常小心,因为并非所有用户都可以连接到Internet,并且这些用户将被您的安装程序阻塞:

[Setup]
AppName=Web Browser Project
AppVersion=1.0
DefaultDirName={pf}\Web Browser Project

[Files]
Source:"WebBrowser.dll"; Flags: dontcopy

[Code]
const
  EVENT_BEFORE_NAVIGATE = 1;

var
  CustomPage: TWizardPage;

type
  TWebBrowserEventProc = procedure(EventCode: Integer; URL: WideString);

procedure CreateWebBrowser(ParentWnd: HWND; Left, Top, Width, Height: Integer; 
  CallbackProc: TWebBrowserEventProc);
  external 'CreateWebBrowser@files:webbrowser.dll stdcall';
procedure DestroyWebBrowser;
  external 'DestroyWebBrowser@files:webbrowser.dll stdcall';
procedure ShowWebBrowser(Visible: Boolean);
  external 'ShowWebBrowser@files:webbrowser.dll stdcall';
procedure NavigateWebBrowser(URL: WideString);
  external 'NavigateWebBrowser@files:webbrowser.dll stdcall';

procedure OnWebBrowserEvent(EventCode: Integer; URL: WideString); 
begin
  // this event will fire with the EVENT_BEFORE_NAVIGATE event code whenever
  // you browse somewhere; this includes all iFrames and redirections, so for
  // your case will be the best wait until your user navigate to the target of
  // the ad (in this example unless user clicks the Users tab on StackOverflow)
  if (EventCode = EVENT_BEFORE_NAVIGATE) and (URL = 'http://stackoverflow.com/users') then
    WizardForm.NextButton.Enabled := True;
end;

procedure InitializeWizard;
begin
  CustomPage := CreateCustomPage(wpWelcome, 'Web Browser Page', 
    'This page contains web browser');
  CreateWebBrowser(WizardForm.InnerPage.Handle, 0, WizardForm.Bevel1.Top, 
    WizardForm.InnerPage.ClientWidth, WizardForm.InnerPage.ClientHeight - WizardForm.Bevel1.Top,
    @OnWebBrowserEvent);
  // I've been getting JSON error; so please ignore it, it's not my fault
  NavigateWebBrowser('http://stackoverflow.com/');
end;

procedure DeinitializeSetup;
begin
  DestroyWebBrowser;
end;

procedure CurPageChanged(CurPageID: Integer);
begin  
  ShowWebBrowser(CurPageID = CustomPage.ID);
  if CurPageID = CustomPage.ID then
    WizardForm.NextButton.Enabled := False;
end;

目前还没有发布该web浏览器控件的事件(因为我创建这个库只是为了好玩)。但对于您的问题,您希望在用户单击广告后立即收到通知,从web浏览器控件的角度导航到某个URL是什么,对吗?如果是这样的话,那么就有一些事件可以通知导航。您可以在导航到该广告目标之前、加载后等收到通知。哪一个最适合您?您想在加载广告目标后启用下一步按钮,还是什么时候启用?感谢您的回复,最适合我的是:在用户单击iframe(广告)后启用下一步按钮。你知道如果真的有这样做的话?我该怎么做呢?它需要修改库并对其进行新的构建。所以,如果你能耐心一点,我会在几天内尽量做到这一点。当然,等等,是的,朋友,当然也会帮助别人,非常感谢。我甚至尝试编译“MainUnit.pas”,但我无法在任何编译器上编译,我尝试使用免费的Pascal编译器Dev Pascal,Lazarus,总是在“uses/dependencies/units”上出错。。。。“使用类、窗口、OleCtrls、SHDocVw;”我希望您尽快这样做,我将再次等待并感谢您,值得祝贺:谢谢您的朋友,更新非常好,祝贺您,我测试了代码,代码运行良好,但在本例中定义了一个加载在同一框架中的URL,然后产生了疑问。当广告在新窗口(新选项卡)中打开时,浏览器处于打开状态(internet explorer),如何检测和监视这一点?不客气!对不起,我能建议的最好办法是,修改该广告以不打开新窗口。事情会变得比我计划的更复杂。正如我提到的,Inno Web浏览器是为了好玩而设计的,不是一个严肃的项目,对不起,我现在正忙着维护它。它是在Delphi中构建的,因此如果您熟悉这种语言,您可以提供;-)但是,如果你有Delphi 2009并使用
TWebBrowser
控件构建你自己的InnoSetup,可能会更容易。无论如何,谢谢,帮助了我很多朋友,不幸的是,他们只懂PHP,对Delphi知之甚少,包括安装的最新版本,我正在学习一点,我设法在TWebBrowser OnStateChange中为onclick事件安装了一个函数,但在页面上单击仅起作用,在链接和/或图片上不起作用,所以现在我换了一种方式,我将获取一个函数并设置一个计时器,以便它检查iexplore.exe进程是否正在运行。如果是打开的(单击后),按钮将再次启用,您的代码对我帮助很大,在后一种情况下,我将尝试使其适应我的使用。直接在Delphi中执行。另一件事,也许你可以帮助我,我无法编译这个文件main unit.pas和WebBrowser.dll(尝试了免费的Pascal编译器,Dev Pascal,Lazarus),现在我在这里的RAD Studio,但不知道怎么做,我可以解释这一点,我相信这很简单。再次感谢你们,值得祝贺的是,我注意到你们非常擅长德尔菲:不客气!我不确定这是否能在Lazarus中起作用,至少因为Lazarus是多平台的,
SHDocVw
只与Windows Internet Explorer绑定。在Delphi中,您可以尝试打开*.dpr文件(Delphi项目文件)。而且,您可以:-)