掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ウィンドウをアクティブにしたい (ID:138158)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>もげさん >Mike!さん 無事に出来ました。 >もげさん 「WinID」使い方が分かりました。大変失礼致しました。 No parentと書かれていて、条件文のGetParentが本当に動いているのか調べたところ、動いていませんでした。失礼致しました。 そこで書き方を換えてみました。 'フォアグラウンドウィンドウの取得 FGhWnd = GetForegroundWindow() Do '200回したら終了 Cnt = Cnt + 1 If Cnt = 200 Then MsgBox("取得に失敗しました") End Else 'ウィンドウタイトルの取得 WndTitle = "" GetWindowText FGhWnd, WndTitle, 1000 'ウィンドウタイトルの表示 If InStr(WndTitle, "IME") <> 0 Then Exit Do End If FGhWnd = GetNextWindow(FGhWnd, 2) End If Loop としたところ『default; IME』という名のハンドルの取得に成功しました。 SetForegroundWindow FGhWnd を行ったところ、最前面には出来たのですがアクティブにはならず sendkeyが出来ませんでした。 そのため ThreadID1 = GetWindowThreadProcessId(FGhWnd, vbNullString) '目的のウィンドウを作成したスレッドのIDを取得 ThreadID2 = GetCurrentThreadId() '現在の入力状態を目的のスレッドにアタッチ AttachThreadInput ThreadID2, ThreadID1, 1 '現在の[フォアグラウンド ロック タイムアウト]の設定を取得 SystemParametersInfo SPI_GETFOREGROUNDLOCKTIMEOUT, 0, VarPtr(buf), 0 '設定を 0ms に変更 SystemParametersInfo SPI_SETFOREGROUNDLOCKTIMEOUT, 0, vbNullString, 0 'ようやく、本命の処理のお出まし SetForegroundWindow FGhWnd 'キーを送る。 SendKeys "%{T}", True Sleep (20) SendKeys "{R}", True Sleep (50) SendKeys "動作テストだよ", True Sleep (200) SendKeys "%{F4}", True SendKeys "%{F4}", True '設定を元に戻して… SystemParametersInfo SPI_SETFOREGROUNDLOCKTIMEOUT, 0, VarPtr(buf), 0 'デタッチしておしまい AttachThreadInput ThreadID2, ThreadID1, 1 としたところうまく動かすことに成功しました。 運だよりか何度もチェックしたところ、失敗なしのため出来上がりました。 「GetCurrentThreadId」「SystemParametersInfo」についてはじっくり勉強していきたいと思います。 どうもお世話になりました。本当に有難うございました。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.