- - PR -
【SWTでオリジナルブラウザ】遷移先のURLの取得方法
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-10-04 18:14
初めての投稿になります。
よろしくお願いいたします。 SWTにてオリジナルのブラウザを作成しています。 機能が不足している為、「org.eclipse.swt.browser.Browser」クラスは 使用していません。 org.eclipse.swt.ole.win32.OleFrame org.eclipse.swt.ole.win32.OleControlSite org.eclipse.swt.ole.win32.OleAutomation を使用してIEコンポーネントを呼んでいます。 そこで、リクエストを発行する前にそのリクエストURLと、内部に保持している 「ブラックリストURL」とを照合させてヒットする場合は画面遷移させない機能を 実装したいです。 しかし、BeforeNavigate2イベントなどで、そのリクエストURLを取得する事ができません。 何か方法はありますでしょうか? リクエスト前のイベントであればBeforeNavigate2イベントでなくても構いません。
環境は jdk 1.5.0.11 eclipse 3.2 org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar Windows XP Professonal SP2 IE 6.0 SP2 です。 よろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2007-10-04 19:56
VB で、イベントハンドラーを作ると、
となり、URL という引数に、「リクエストURL」が入っているように思います。ちなみに、pDisp という引数の LocationURL というプロパティーのほうには遷移前の URL が入っているような感じです。 Java の swt で Ole を操作するとそうなっていないのでしょうか?まず、IE コンポーネントの問題か、swt の問題か、を調べられてはどうでしょうか。 VB や Excel の VBA が使えれば容易に判別できるだろうと思います。慣れないと使いにくいですが、使えればデバッグの選択肢が増えてデバッグしやすくなりますよ。 (C# などでも VB と Java の中間的に使えてよいかもしれませんが。) -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||||||||||
|
投稿日時: 2007-10-04 21:12
unibonさん
早速の回答をありがとうございます。
引数のOleEventのarguments[]フィールドにBeforeNavigate2イベント情報が入っています。 (BeforeNavigate2の引数分、argumentsの配列になります) OLEブラウザで調べると void BeforeNavigate2( [in] IDispatch* pDisp, [in] VARIANT* URL, [in] VARIANT* Flags, [in] VARIANT* TargetFrameName, [in] VARIANT* PostData, [in] VARIANT* Headers, [in, out] VARIANT_BOOL* Cancel); となっているので、arguments[1]を取得してみたのですが、遷移前のURLでした。 arguments[4]の中身にあるのかもしれませんが、Variant型から中身を見る方法が わかりません。 私の調査した結果はここまででした。 <<修正>> 修正前:
修正後
よろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2007-10-04 22:59
SWT はぜんぜん使ったことがないのですが、提示されたコードをもとにして、ネットから拾ってきたコードを切り貼りして、みようみまねで私も SWT で動かしてみましたが、 event.arguments[1].getString() で、これから遷移しようとする URL が取得できているように思えます。「遷移前のURL」ではないと思うのですが。 どのようにして「遷移前のURL」であると判断されましたか? 「遷移前」という概念の解釈が違うのでしょうか? なお、私の環境は、 JRE 1.6.0_02 Eclipse 3.3.1 org.eclipse.swt.win32.win32.x86_3.3.1.v3346i.jar Windows XP Professional SP2 IE 7.0 です。 #後で環境表記を修正。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} [ メッセージ編集済み 編集者: unibon 編集日時 2007-10-04 23:02 ] | ||||||||||||
|
投稿日時: 2007-10-05 10:03
unibonさん
回答ありがとうございます。
例えば現在「http://hogehoge/home/index.html」のページを表示しているとします。 そのページのリンクとして「http://hogehoge/home/link.html」があるとします。 このリンクをクリックした際のBeforeNavigate2イベントにおいて 遷移前のURL 「http://hogehoge/home/index.html」 リクエストURL 「http://hogehoge/home/link.html」 という意味で書いております。 unibonさんは上記の意味合いで「リクエストURL」が取得できた、という事ですね? 。。。了解しました。サンプルは実際のソースを簡易化したものなので サンプルのソースで確認してみます。 ありがとうございました。 | ||||||||||||
|
投稿日時: 2007-10-05 10:34
サンプルで確認しました。
。。。。。 「リクエストURL」が取得できていました。 実際のソースで確認しました。 。。。。。 「リクエストURL」が取得できていました。 大変申し訳ございません。 私が見間違えていたようです。。。 とりあえず解決しました。(解決していました) unibonさんにはご迷惑をおかけいたしました。 丁寧な対応をありがとうございました。 #せめてこの投稿を見た皆様の役に立てますように。。。 |
1