- PR -

最前面にしたい。

1
投稿者投稿内容
ヒロコ
会議室デビュー日: 2005/01/28
投稿数: 4
投稿日時: 2005-02-10 15:57
誰か教えてください。

今、VB.NETでシステムを開発しているのですが、困っていることがあります。
印刷のためにExcelオブジェクトにフォーカスを移して処理した後(印刷ダイアログを表示しています)、VB.NETの画面を最前面にして表示したいのですが、ソリューションで実行すると最前面に来てくれるのですが、exeから実行するとwindowsのツールバーがチカチカするだけで、最前面には来てくれません。
なぜでしょうか?原因のわかる方がおられましたら是非力を貸してください。

今、プログラムでは
フォーム名.Activate
で、最前面にしようとしています。

よろしくおねがいします。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-02-10 16:17
引用:

exeから実行するとwindowsのツールバーがチカチカするだけで、最前面には来てくれません。
なぜでしょうか?原因のわかる方がおられましたら是非力を貸してください。



少し前からの Windows の仕様です。

入力フォーカスを持ったアプリケーションが存在する時に、バックグラウンドタスクからアプリケーションを起動したような場合、後から起動したアプリケーションが入力フォーカスを奪わないようとの配慮からです。

これに対処するためには、

・レジストリ設定を変更する。(システムグローバルに挙動が変わってしまいます)
・アプリケーションを起動するコードで対応する。

のどちらかを行います。

詳細はサポート情報の

文書番号: 97925
[SDK32] SetActiveWindow() と SetForegroundWindow() の機能

で解説されているので、参照してみてください。


_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
かえで
常連さん
会議室デビュー日: 2004/09/16
投稿数: 38
投稿日時: 2005-02-10 16:44
希望される動作は
・画面を最前面に表示し、フォーカスも当てたい
・画面を最前面に表示するだけ
のどちらでしょうか?

(FormActiveを使用しているので前者だとは思いますが)

前者を希望されるのであれば、渋木宏明(ひどり)サマのおっしゃる通りとなりますが、
後者であれば、TopMostプロパティを使用してはいかがでしょうか?

ヒロコ
会議室デビュー日: 2005/01/28
投稿数: 4
投稿日時: 2005-02-10 17:40
返信ありがとうございます。

希望する動作は
・画面を最前面に表示し、フォーカスも当てたい です。
FormActiveとTopMostプロパティを併用するのは良くないですか?

また、
文書番号: 97925
[SDK32] SetActiveWindow() と SetForegroundWindow() の機能を読んでみたのですが、VB.NETでどのように使用していいのかわかりませんでした。
教えてもらっても良いですか?

ひよっこですいません。
かえで
常連さん
会議室デビュー日: 2004/09/16
投稿数: 38
投稿日時: 2005-02-10 18:41
ひろこさま

私も昔同じような問題に直面しまして(その時はVCでしたが^−^;)
以下のサイトを利用しました。
http://techtips.belution.com/ja/vc/0012/

解説は文書番号: 97925 よりは分かりやすいと思います。




1

スキルアップ/キャリアアップ(JOB@IT)