0

私は多くのIEWindowsを備えたIEViewを持っており、各IEWindowにはIETabがあり、各IETabにはタブのウィンドウハンドルとそのタブのURLが含まれています。

私は現在使用しています

 WindowStateChanged(uint dwWindowStateFlags, uint dwValidFlagsMask)

タブがいつ変更されるかを知るため。私が理解できないのは、IEがすでに存在する場合の起動時です。現在アクティブなタブは何ですか?アクティブなURLを取得できれば、アクティブなタブを見つけることができます。アクティブなタブウィンドウのハンドルを取得できれば、アクティブなタブを取得できます。たぶん、ツリーに登ってgetSelectedTabIndexを試して、アクティブなタブを判別する必要があります。これは、IETabがIEにある正確な順序で追加されたことがわかっているためです。これは、興味深いものであり、おそらく偶然ではないと思いました。

誰かがどちらかの方法を知っていますか

  1. アクティブなタブハンドルを取得するまたは
  2. アクティブなタブのURLを取得して、タブを検索できるようにするか、
  3. タブコントロールを取得し、選択したタブのインデックスを取得する方法
  4. または、この時点でウィンドウにフォーカスがあり、タブがフォーカスされていると見なされるため、フォーカスされたIntPtrハンドルを見つけることができますか?

ありがとう、ディーン

4

1 に答える 1

0

うーん、これが正しいかどうかはわかりませんが、選択したタブは常にWinspy++を使用するコンポーネントリストの最後のClassname=FrameTabです。タブを切り替えると、リストの順序が変わり、選択したものが常に最後になります。これはIE9用です...他のバージョンについてはわかりません。

したがって、タブからIntPtrハンドルを使用すると、ツリーを上ってClassname = IEFrameに移動し、Classname = FrameTabタイプの子を取得でき、最後のタブが選択されたタブになると思います。

于 2012-08-31T22:33:39.583 に答える