掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
SetForegroundWindow でアクティブにならない場合には? (ID:111753)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
自分で回答してる時は『説明が分かりにくいなぁ』…とか思ってるくせに 質問側に回るとやっぱり意図を伝えきれていなかったという…申し訳ないです。 ご指摘の通り >多分、コードから推察するに、アクティブにしたはずのVBの >フォームが、エクセルのウィンドウの後ろに隠れてしまう・・・ 現象でした。ボタン押下1回目は問題なく、2回目でエクセルが 前面に来た後、フォームが前面に出てこない…よく見ると タスクバーでこのアプリケーションが点滅しておりました。 魔界の仮面弁士さん指摘の SetForegroundWindow の仕様ですね。 http://support.microsoft.com/default.aspx?scid=kb;ja;227043 ざっとは見てたんですが、アプリケーションがフォアグラウンドウィンドウ になってればいいものと思い込んでいて詳しく調べてませんでした。 余談ですが、CPU は .NET も動かすので 1.60GHz です。 最初のコードでもコード内で Command1_Click を繰り返して呼んだ場合は 問題なかったりします(汗)。2回目で失敗してタスクバーでフォームを 選択し前面に表示。…で1(3)回目は成功2(4)回目で失敗...( _)_ ボタン押下か SetForegroundWindow の1回目の呼び出しで『ユーザーが 作業している』と判断されてアクティブにならないのでしょうね。 岡田 之仁さんのウィンドウの寸法を取得して SetWindowPos する方法。 問題なく動作します。最初にエクセルを表示した時にエクセルがアクティブ ウィンドウになりますが、フォームが自分に SetFocus すれば問題ありません。 フォアグラウンドウィンドウが変更されないので(?)質問とは少しずれる かもしれませんが解決です。 魔界の仮面弁士さんのフォアグラウンドロックタイムアウトの設定でも うまく動作しました。 ありがとうございました。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.