1

我在这里找到了论坛用户制作的这个名为“inno-web-browser”的“插件” TLama,这个插件非常好,可以完美打开一个网址,但我需要知道你是否有,因为我监控点击因此追求安装什么的,例如:

URL 将是http://www.example.com/ads.php

这个文件“ads.php”将生成一个广告:这个广告将是一个普通横幅(单个图像)的时间,它需要一些时间才能在 Flash 中完成,到目前为止一切都很好。

我想知道当NEXT页面iframe(ads.php)被收费时它是否有锁定按钮,并且只有在用户点击广告(图像或flash)后才会释放NEXT按钮。

你可以这样做?

4

1 回答 1

2

我为BeforeNavigate2Web 浏览器控件的事件添加了一个事件处理程序。示例脚本现在由这个新功能扩展。所以首先获取the most recent version并使用如下代码。它使用浏览器禁用自定义页面上的下一步按钮,除非用户单击所示 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;
于 2013-05-26T16:00:23.903 回答