C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.91830 の関連記事表示

<< 0 >>
■91830  複数同一タイトルIE画面で最前面画面を取得する方法
□投稿者/ TanuTanu -(2019/08/06(Tue) 20:31:32)
>

    分類:[.NET 全般] 

    いつもお世話になっております。

    InternetExplorerで複数の同一タイトルで最前面に表示されているオブジェクトを取得したいのですが
    いろいろ試したのですがハンドルは空いてるものを割り当ててしまうのでハンドルの大小でも判別できず
    困っております。

    Zオーダーを駆使すれば出来そうなのですが方法が解りません。
    ご教授の程宜しくお願いいたします。

    IE−タイトル:TEST
    IE−タイトル:TEST
    IE−タイトル:TEST・・・これが最前面

    *************************

    使用しているコード、API抜粋

    For Each objIE In aShell
     If objIE.LocationName = "TEST" THEN
      WIN = objIE
     End If
    Next

    'キャプション:TESTを全て検出
    EnumWindows(New EnumWindowsDelegate(AddressOf EnumWindowCallBack), IntPtr.Zero)
親記事 /過去ログ158より / 関連記事表示
削除チェック/

■91832  Re[1]: 複数同一タイトルIE画面で最前面画面を取得する方法
□投稿者/ 魔界の仮面弁士 -(2019/08/06(Tue) 21:57:46)
    No91830 (TanuTanu さん) に返信
    > InternetExplorerで複数の同一タイトルで最前面に表示されているオブジェクトを取得したいのですが
    > いろいろ試したのですがハンドルは空いてるものを割り当ててしまうのでハンドルの大小でも判別できず
    > 困っております。

    ShellWindows で列挙するまではできているのですよね。
    http://bbs.wankuma.com/index.cgi?mode=al2&namber=47389&KLOG=80


    個々の InternetExplorer オブジェクトは HWND プロパティで識別できるので、
    下記のように GetWindow( GetDesktopWindow(), GW_CHILD ) の API で取得できないでしょうか。
    https://teratail.com/questions/152953

    表示されているタブ単位での判断も必要な場合は UIAutomationClient 併用で。
記事No.91830 のレス /過去ログ158より / 関連記事表示
削除チェック/

■91847  Re[2]: 複数同一タイトルIE画面で最前面画面を取得する方法
□投稿者/ TanuTanu -(2019/08/07(Wed) 14:14:29)
>
    魔界の仮面弁士 様

    いつもお世話になっております。
    ご教授頂いた事で何とかクリア出来ました^^
    ありがとうございます。

    Dim CNT As Integer = 2
    Dim TEST_TRUE As Boolean = False
    Dim Wnd(100) As IntPtr


    Wnd(1) = GetDesktopWindow()
    Debug.WriteLine("デスクトップ画面 : " & Convert10to16(Wnd(1)).ToString)

    Wnd(2) = GetWindow(Wnd(1), 5)
    Debug.WriteLine("デスクトップ子画面トップ: " & Convert10to16(Wnd(2)).ToString)


    Do

    Wnd(CNT + 1) = GetWindow(Wnd(CNT), 2)

    Debug.WriteLine(CNT & " : " & Convert10to16(Wnd(CNT + 1)).ToString)

    'TEST画面ハンドルと比較

    If Wnd(CNT + 1) = hWnd Then
    Debug.WriteLine("合致")
    TEST_TRUE = True
    End If

    CNT = CNT + 1

    Loop Until TEST_TRUE = True


記事No.91830 のレス / END /過去ログ158より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -