- PR -

プログラムの呼び出しで、呼び出し先の画面のマップされるのを待機するには

1
投稿者投稿内容
ogitsu
会議室デビュー日: 2004/09/13
投稿数: 2
投稿日時: 2004-11-01 19:59
VB.NETを使用して、機能毎にWindowsアプリケーション(exe)を作成し、
コマンドボタンなどで別機能を呼び出すようにプログラムを作成しました。

別機能を呼び出し、画面が表示された段階で、呼び出し元は処理を終了するように
作成したのですが、それぞれの処理で、DBの接続や、複数のコントロールが
張り付いているため、画面のマップが遅く、処理の呼び出し時に、
画面上にデスクトップの画面が表示されてしまいます。

別機能の呼び出しは、Processクラス・Start後、WaitForInputIdleメソッドで
プロセスがアイドル状態になるまで待機しています。

Dim p As System.Diagnostics.Process = _
   System.Diagnostics.Process.Start("c:\B.exe")

p.WaitForInputIdle()

Respondingプロパティで、ユーザー インターフェイスが応答するかどうかを
チェックしましたが、状況は変わりませんでした。

ユーザの要望で、なるべくデスクトップは表示しないようにとのことで、
困っております。

どなたか対処法をご存じでしたらお教えください。
よろしくお願いします。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-11-02 23:51
諸農です。

呼び出したアプリケーションが表示されれば、自分はディアク
ティブになると思うので、別のアプリケーションを呼び出す時
にフラグを立てておき、Form.Deactivateイベントでフラグが立
っていたら自分をクローズするって言うのはいかがでしょうか。

#思い付きの未検証なので、確認をお願いしますm(__)m
_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-11-03 06:52
スプラッシュ画面を表示する、というのは、どう?
_________________
ogitsu
会議室デビュー日: 2004/09/13
投稿数: 2
投稿日時: 2004-11-04 11:50
引用:

Jubeiさんの書き込み (2004-11-02 23:51) より:
諸農です。

呼び出したアプリケーションが表示されれば、自分はディアク
ティブになると思うので、別のアプリケーションを呼び出す時
にフラグを立てておき、Form.Deactivateイベントでフラグが立
っていたら自分をクローズするって言うのはいかがでしょうか。




諸農さん、Jittaさん、ありがとうございました。

Form.Deactivateで自分自身をクローズするようにして試したのですが、
呼び出し先の起動直後にイベントが発生し、クローズされてしまいました。
呼び出し先がアイドル状態になると、Deactivateイベントが発生してしまうのでしょうか…

Jittaさんの言われたスプラッシュですが、ユーザが納得してくれない場合提案
したいと思います。

Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-11-05 00:18
諸農です。

引用:

呼び出し先がアイドル状態になると、Deactivateイベントが発生してしまうのでしょうか…



勘違いさせてしまったようですね。
他のアプリケーションがアクティブになると自アプリがディアクティブになるのでは?という予測から思いついた方法ですので、うまくいかなかったのでしたら忘れてくださいm(__)m


_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
1

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