2008年1月3日木曜日

IEコンポのジャンプ先URLを取得する

HHXソースコード解析によるスクリプト。
リンクをクリックしたときにそのジャンプ先URLを取得します。HHXではこのURLを解析して様々な処理を行っています。

広告による読み込み(Javascript)に対しても反応してしまうようです。
// 他のファイルにジャンプする時いちいち確認するブラウザのサンプル
// 主にhhx.hspから引用
#include "user32.as"
// ie event
#define DIID_DWebBrowserEvents2     "{34A715A0-6587-11D0-924A-0020AFC7AC4D}"
// exdispid.h
#define DISPID_BEFORENAVIGATE2      250   // hyperlink clicked on

#packopt hide 1
    // ウィンドウ最大化を可能にする
    // 参考 -> http://lhsp.s206.xrea.com/hsp_window.html
    screen 0ginfo_dispxginfo_dispyscreen_hide
    GetWindowLong hwnd, -16
    SetWindowLong hwnd, -16stat | $10000 | $40000

    // ActiveXコントロール(IEコンポーネント)の配置
    axobj ieBrowser, "Shell.Explorer.2"
    idIE = stat
    if idIE == -1 {
        dialog "ActiveXコントロールの配置に失敗しました。"1
        end
    }

    ieBrowser->"Navigate" "http://www.yahoo.co.jp/"

    // 割り込み設定
    comevent ieEvent, ieBrowser, DIID_DWebBrowserEvents2*event_ie
    oncmd gosub *event_resize0x0005
    onexit goto *exit

    width 640480
    gsel 01
    stop

// COMイベント発生時のジャンプ先
*event_ie
    if comevdisp(ieEvent) == DISPID_BEFORENAVIGATE2 {
        // URLを取得
        comevarg newurl, ieEvent, 11
        dialog newurl + "\nを開こうとしています。開きますか?"2
        if stat == 7 {
            // 「いいえ」の場合はNAVIGATEをキャンセル
            comevarg Cancel, ieEvent, 62
            Cancel("val") = 1
            delcom Cancel
        }
    }
    return

// ウィンドウのリサイズ
*event_resize
    MoveWindow objinfo(idIE, 2), 00ginfo_winxginfo_winy1
    return

// プログラムの終了処理
*exit
    oncmd 0 : onexit 0
    delcom ieEvent
    delcom ieBrowser
    end

2 件のコメント:

Unknown さんのコメント...

IEコンポーネントでのポップアップリンクへの対応を考えていたのですがこちらのスクリプトを参考にし解決しました。ありがとうございました。

Unknown さんのコメント...

IEコンポーネントでのポップアップリンクへの対応を考えていたのですが、こちらのスクリプトを参考にし解決しました。ありがとうございました!