TWebBrowserのブラウザをXPスタイルにするには?

解決


前忠  2006-05-23 09:18:33  No: 21744

いつも参考にさせて頂いています。

表題の件なのですが、TWebBrowserのブラウザをXPスタイルにすることは出来ますか?
特にボタンが角ばっているのあんまり好きではないのですが。
だったら、ボタンに角の丸いボタン画像を表示すればいいじゃないと言われればそれまでなのですが・・。

何か良い方法はありませんか?


えーとね  2006-05-23 15:21:27  No: 21745

IDocHostUIHandler のGetHostInfo メソッドを実装して
DOCHOSTUIFLAG にDOCHOSTUIFLAG_THEME (0x00040000)を設定します。
http://msdn.microsoft.com/workshop/browser/hosting/reference/enum/dochostuiflag.asp

EmbeddedWB コンポーネントを使えば楽です。
UserInterfaceOptions のTHEME をtrue (デフォルト)にするだけですから。
http://www.bsalsa.com/Downloads/EmbeddedWB_D2005_Update12.zip


前忠  2006-05-23 22:18:19  No: 21746

返信ありがとうございます。

>IDocHostUIHandler のGetHostInfo メソッドを実装して
>DOCHOSTUIFLAG にDOCHOSTUIFLAG_THEME (0x00040000)を設定します。
IDocHostUIHandler や GetHostInfoで色々と検索してみたのですが、引っかかるサイトは英語ばっかりでそれらしいサイトを見つけることが出来ませんでした。
もう少し詳しく教えて頂けませんか?

>EmbeddedWB コンポーネントを使えば楽です。
>UserInterfaceOptions のTHEME をtrue (デフォルト)にするだけですから。
参考にさせて頂きます。
でも、出来たらTWebBrowserで実現出来たらいいなと考えています。

宜しくお願いします。


msdn  2006-05-24 01:45:26  No: 21747

MSDN 日本
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vclib/html/vcrefcdhtmldialoggethostinfo.asp
日本のMSDNは、情報古いかも。

どのみちこの手のはMSDN見ないと無理。


えーとね  2006-05-24 07:08:53  No: 21748

> でも、出来たらTWebBrowserで実現出来たらいいなと考えています。
出来ないと思います。

TEmbeddedWB = class(TWebbrowser, IDocHostShowUI, IDocHostUIHandler,
      IDocHostUIHandler2, IDispatch, IServiceProvider
{$IFDEF USE_IOLECOMMANDTARGET}, IOleCommandTarget{$ENDIF})
ですので、TEmbeddedWB もTWebbrowser を拡張しただけです。

TMyWB = class(TWebbrowser, IDocHostUIHandler)として
GetHostInfo 以外はResult := S_OK;を返すコンポーネントを作れば
良いのかもしれませんが、意味はないと思います。


えーとね  2006-05-24 07:18:55  No: 21749

> GetHostInfo 以外はResult := S_OK;を返す
GetHostInfo 以外はResult := S_OK;のみのメソッド
に訂正します。GetHostInfo の実装はTEmbeddedWB を見ると良いと思います。

TEmbeddedWB 以外の方法がありましたら、よろしくお願いします。


前忠  2006-05-24 10:35:46  No: 21750

返信ありがとうございます。

TWebBrowserでは実現は難しそうですね。

そこで、EmbeddedWBコンポーネントを使ってみようとEmbeddedWebBrowser_D7.dpkをコンパイルしてインストールをしたのですが、フォームにTEmbeddedWBを貼り付けて実行すると以下のコンパイルエラーになります。

  [エラー] IEUtils.pas(104): 未定義の識別子 : 'IID_IQUERYINFO'
  [エラー] IEUtils.pas(282): 未定義の識別子 : 'IUniformResourceLocator'
  [エラー] IEUtils.pas(287): 未定義の識別子 : 'CLSID_InternetShortcut'
  [エラー] IEUtils.pas(288): 未定義の識別子 : 'IID_IUniformResourceLocator'
  [エラー] IEUtils.pas(290): この型には指定した演算子は使えません
  [エラー] IEUtils.pas(293): 演算子またはセミコロン (';') が必要です
  [エラー] IEUtils.pas(520): 未定義の識別子 : 'RegMail'
  [致命的エラー] EmbeddedWB.pas(47): 'IEUtils.pas' ユニットはコンパイルできませんでした

何か他にしなければいけないことがあるのですか?
ちなみにライブラリのパスはちゃんと通しています。


えーとね  2006-05-24 15:10:29  No: 21751

> 以下のコンパイルエラーになります。
Delphi 7 Professional Update1 で試してみましたが、再現しませんでした。
EmbeddedWB_Demo は実行できますか?
実行できなければインストールに失敗してる可能性があります。

また(特にインターフェース部の)uses にIEConst がない場合、
未定義エラーが出る場合があります。確認してみてください。


前忠  2006-05-25 06:17:40  No: 21752

すみません。私の設定ミスでした。
お手数をおかけしました。

以前、TUIWebBrowserをインストールしていたため、競合してコンパイルエラーになっていました。
ライブラリからTUIWebBrowserのパスを削除したらうまくいきました。

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加