■69677 / ) |
Re[2]: メインウィンドウの判断はどうやって行うの? |
□投稿者/ C#初心者 (20回)-(2014/01/19(Sun) 22:23:09)
|
■No69675 (Azulean さん) に返信 > 2014/01/19(Sun) 20:57:04 編集(投稿者) > > ■No69673 (C#初心者 さん) に返信 >>1分後に現在、操作しているウィンドウ(メインウィンドウ) > > これはメインウィンドウと呼びません。 > アクティブウィンドウとか、フォーカスを持ったウィンドウという表現になるでしょうか。 > > >>メインとなっているウィンドウのタイトルを >>C#で作成したアプリケーションのテキストボックスに表示したいです。 >> >>尚、C#で作成したアプリケーションはForm1で作成し、 >>表示するテキストボックスはTextbox1.Textとします。 > > この部分と、次の部分の関係がよくわかりません。 > テキストボックスに表示することと、アクティブウィンドウを変更することには関係性がないためです。 > >>これを行いたい理由は、 >>あるタイミングでメインのウィンドウがC#で作成したアプリケーション以外 >>の場合に、メインのウィンドウをC#で作成したアプリケーションに >>強制的に戻したいためです。 > > > 最近の Windows では、アクティブではなくなった、裏に回った状態からプログラムが勝手にアクティブウィンドウを変更することはできません。 > そういう風に Windows が制限しています。表に出ようとしてもタスクバーで点滅するぐらいになります。 > これが導入された背景は、文字列の入力などの操作中に勝手に表に出てきてユーザー操作を阻害してしまうことがあったからだと思われます。 > > > SetForegroundWindow がアクティブにウィンドウにする API になりますが、ここの Remarks に条件が書いています。(英語) > どういった条件であれば勝手に表に出てこれるのか、読んでみてください。 > http://msdn.microsoft.com/en-us/library/windows/desktop/ms633539 > > > 逆に、アクティブウィンドウを取得するのは GetForegroundWindow です。これで得られたウィンドウハンドルから GetWindowText をやればウィンドウタイトルをとれたはず…。
GetForegroundWindow(); SetForegroundWindow(hWnd); すると、上手く出来る事が分かりました。
ありがとうございます。
|
|