HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0410
blackieブラウザについての質問です。6解決


blackie

リンク

2007/4/10(Tue) 23:09:04|NO.7236

サンプルスクリプトを利用してブラウザを作ったのですが、targetがblankの場合に
IEが起動します。これはエンジンがIEだから仕方のないことなのでしょうか?
blankの場合にも自作のブラウザで見れるようにしたいのですが。



この記事に返信する


特命希望

リンク

2007/4/11(Wed) 02:32:23|NO.7248

私も今サンプルのブラウザを弄っています!

詳しくなくて申し訳ないのですが、
“targetがblankの場合”というのは別リンクの場合ということでしょうか?

そのような場合、私もタブで管理できるといいなあ、といつも思います。



Irisawa

リンク

2007/4/11(Wed) 02:34:26|NO.7249

試していませんし、そもそもVC++向けなので解読しにくくHSPでも出来るかどうかなど
詳しいことは分かりませんが、以下のところで、ナビゲートのイベントを取得して動作を
変更するようなサンプルがあります。

http://www.nitoyon.com/vc/tips/ie_component.htm



blackie

リンク

2007/4/11(Wed) 15:15:24|NO.7254

ありがとうございます。説明が足りませんでしたが、おっしゃる通り別リンクの意味です。
自作のブラウザでPC内のHTMLデータを管理しつつ眺めていたのですが、最近になって、
同一ウィンドウ以外はIEが起動することに気づきました。VC++はまったく知りませんが、
ともかく見てみます。



pizza

リンク

2007/4/11(Wed) 21:16:46|NO.7278

新規screenで開くようにしてみました。


#uselib "ole32.dll" #func IIDFromString "IIDFromString" wstr, var #define IID_IUnknown "{00000000-0000-0000-C000-000000000046}" #usecom IUnknown IID_IUnknown #comfunc IUnknown_QueryInterface 0 int, int #define IID_IDispatch "{00020400-0000-0000-C000-000000000046}" #define DIID_DWebBrowserEvents2 "{34A715A0-6587-11D0-924A-0020AFC7AC4D}" #define DISPID_NEWWINDOW2 251 #define VARIANT_TRUE -1 #define VARIANT_FALSE 0 // ウィンドウ(comobj配列)の最大 // 2以上にして下さい。1にすると新しいウィンドウが開けません。 #define MAX_WINDOW 10 // comobj型の配列確保 dimtype ie, vartype("comobj"), MAX_WINDOW dimtype ie_event, vartype("comobj"), MAX_WINDOW axobj ie, "Shell.Explorer.2" comevent ie_event, ie, DIID_DWebBrowserEvents2, *lb_event ie->"Navigate" "http://www.onionsoft.net/hsp/" onexit gosub *lb_exit stop *lb_event sel = ginfo_sel // 現在の操作対象を保存 ev_id = ginfo_act // タブブラウザならタブアイテムのインデックスを使う if (ev_id < 0) | (ev_id >= MAX_WINDOW) : return gsel ev_id switch comevdisp(ie_event(ev_id)) case DISPID_NEWWINDOW2 gosub *lb_OnNewWindow2 swbreak swend gsel sel // 操作対象を戻す return *lb_OnNewWindow2 // 使えるIDを探す new_id = -1 repeat MAX_WINDOW if varuse(ie(cnt)) == 0 : new_id = cnt : break loop if new_id == -1 { comevarg v2, ie_event(ev_id), 1, 2 v2("value") = VARIANT_TRUE // 新しいウィンドウを開かない dialog "これ以上開けません" return } // 新規ウィンドウ作成 screen new_id axobj ie(new_id), "Shell.Explorer.2" comevarg v1, ie_event(ev_id), 0, 2 // 一つ目のパラメータをVARIANT型で取得 ppDisp = v1("refptr") // ppdispVal // IID構造体に変換 dim iid, 4 IIDFromString IID_IDispatch, iid // 新規ウィンドウ(IE)のIDispatchをppdispValに取得 IUnknown_QueryInterface ie(new_id), varptr(iid), ppDisp // 新規ウィンドウのイベント設定 comevent ie_event(new_id), ie(new_id), DIID_DWebBrowserEvents2, *lb_event return *lb_exit sel = ginfo_sel gsel wparam, -1 clrobj delcom ie_event(wparam) delcom ie(wparam) count = 0 repeat MAX_WINDOW if varuse(ie(cnt)) : count++ loop if count == 0 : end // 全て閉じていれば終了 gsel sel return



pizza

リンク

2007/4/13(Fri) 19:30:09|NO.7375

イベントはアクティブなウィンドウから来るとは限りませんね...
COMイベントを受け取ったウィンドウのIDを取得する方法が見当たりません。
(HSP3.0a)

MAX_WINDOWの数だけイベントラベルを用意してev_idを設定するとか...



blackie

リンク

2007/4/13(Fri) 21:27:50|NO.7381

pizzaさん ありがとうございます。うまく行きますね。感激です。丁寧なスクリプトまで
本当にありがたい。早速自作のブラウザに組み込んでみます。
でもHSPの進化と言うか何と言うかすごいですね。少し前まで、HSPで作成したブラウ
ザでページを見るなんて、想像もしていませんでした。
教えてくれた皆さん、また、よろしく頼みます。



ONION software Copyright 1997-2023(c) All rights reserved.