TWebBrowserでIHTMLWindow4.hasfocusを使うには?


XA  2011-09-19 05:19:59  No: 40956

いつもお世話になります。1点質問させてください。
TWebBrowserでページ内の文字列検索を実装しようと思っているのですが、
フレームが分かれている際、アクティブなフレームから検索を行おうと思い、

  IHTMLWindow4(WebBrowser1.Document).hasfocus

という命令を用い、検索対象のフレームがアクティブかどうかを確認しよう
と思いました。

そのため、uses節にMSHTML_TLBを追加して、上の命令を記述してコンパイル
しようとしたのですが、「hasfocus」が未定義の識別子としてエラーが出て
しまい、コンパイルできません。

Delphi6 Personal + IE8の環境では、このIHTMLWindow4というのは使用不可能
なのでしょうか。もしご存知の方、実際にお使いの方などいらっしゃいましたら、
ぜひお教えください。よろしくお願いいたします。


Mr.XRAY  2011-09-19 08:45:43  No: 40957

こんにちは。Mr.XRAYです。

>Delphi6 Personal + IE8の環境では、このIHTMLWindow4というのは使用不可能

たとえPersonal版でも、タイプライブラリを生成した場合、pasファイルのソースコードがあります。
MSHTML_TLB.pas内のコードで確認できます。
生成されるTLB関係のファイルは、DelphiとOSのバージョンによって異なる場合がありますので、
自分で確認してみてください。
(ソースコードというのは強力な開発の武器です)

もっとも、hasfocusというのは、IHTMLWindow4には元々ないようですが。

HTMLWindow4 Interface
http://msdn.microsoft.com/en-us/library/aa741344%28VS.85%29.aspx

IHTMLDocument4 Interface
(こちらにはあります)
http://msdn.microsoft.com/en-us/library/aa752529%28VS.85%29.aspx


Mr.XRAY  2011-09-19 08:52:30  No: 40958

ちなみに、少なくともDelphi 2007以上であれば、
HTMLWindow4、IHTMLDocument4インターフェイスのどちらも、
デフォルトで(タイプライブラリの取り込みをしなくても)使用可能です。
Delphi 6のMSHTML.pasにはありません。


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

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






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