1

TLama フォーラムのユーザーによって作成された「inno-web-browser」という「アドオン」を見つけました。このアドオンは非常に優れており、URL を完全に開くことができましたが、クリックを監視しているため、持っているかどうかを知る必要があります。したがって、インストールまたは何かを追求します。たとえば、次のようになります。

URL はhttp://www.example.com/ads.phpのようなものになります

このファイル「ads.php」は広告を生成します: この広告は、一般的なバナー (単一の画像) になる時間であり、Flash で行われるため、ここまでは良いことです。

NEXTページのiframe(ads.php)がチャージされている間はロックボタンがあり、ユーザーが広告(画像やフラッシュ)をクリックした後にのみNEXTボタンが離されるのだろうか。

あなたはこれを行うことができます?

4

1 に答える 1

2

BeforeNavigate2Web ブラウザー コントロールのイベントのイベント ハンドラーを追加しました。サンプル スクリプトは、この新機能によって拡張されました。したがって、最初にthe most recent version次のようなコードを取得して使用します。ユーザーが表示された StackOverflow サイトの [ユーザー] タブをクリックしない限り、ブラウザーでカスタム ページの [次へ] ボタンを無効にします。ただし、すべてのユーザーがインターネットに接続できるわけではなく、インストーラーでスタックしてしまうため、この無効化には細心の注意を払ってください。

[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 に答える