C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: EXEからEXEの起動


(過去ログ 13 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■3729 / inTopicNo.1)  EXEからEXEの起動
  
□投稿者/ NORTH (1回)-(2007/05/21(Mon) 02:39:42)

分類:[VB.NET (Windows)] 

あるEXEから別のEXEを起動して、最後に起動したEXEをactiveにし最前面に表示していますが、表示数秒後に背面に移動してしまいます。原因がわかりません。何かプログラミングコードに抜けがあるのでしょうか?。このような場合のサンプルプログラムがありましたら、ご教授お願いします。
引用返信 編集キー/
■3730 / inTopicNo.2)  Re[1]: EXEからEXEの起動
□投稿者/ Jitta (324回)-(2007/05/21(Mon) 06:55:13)
No3729 (NORTH さん) に返信
> あるEXEから別のEXEを起動して、最後に起動したEXEをactiveにし最前面に表示していますが、表示数秒後に背面に移動してしまいます。原因がわかりません。何かプログラミングコードに抜けがあるのでしょうか?。このような場合のサンプルプログラムがありましたら、ご教授お願いします。

1 アプリケーション間通信をする
1 1 キック後、応答を待つ
1 2 キックされた側は、onIdle で通知する
1 3 応答があったら最前列に移動


2 window 監視
2 1 キックしたら、タイマーで監視処理にはいる
2 2 定期的に、起動したプロセスがプロセス一覧にあるか調べる
2 3 プロセス一覧にあれば、window ハンドルを持っているか調べる
2 4 ハンドルが出来ていれば、最前列に移動
引用返信 編集キー/
■3745 / inTopicNo.3)  Re[1]: EXEからEXEの起動
□投稿者/ Jitta (326回)-(2007/05/22(Tue) 06:26:43)
Jitta さんの Web サイト
 うちで発生している、ある現象。

 アプリケーションのランチャと、ラウンチされるアプリケーションがある。
ランチャはアプリケーション起動後、Hide する。そして、起動したアプリケーションが終了した後、Show する。
ところが、起動されたアプリケーションが残っているのに、ランチャが現れる。(1)
おっかしいなぁ?と、起動しているプロセスを、タスク マネージャで監視していると、起動されたアプリケーションが自分のコピーを起動し、そして終了している。
そりゃ、ランチャが現れるよ。


 そんなわけで、現象のうわべだけを見ていても、原因にたどり着いたり、原因を取り除いたりすることはできません。上の、私のところで発生している現象で喩えると、(1)の部分までしか書かれていないわけです。
 あなたが、原因にたどり着くためにどんなことをしたのか、教えてください。
特に、プログラムの処理の流れを教えてください。
今書いてあることでは、「別のEXE」は複数あるのか、単数なのか。自分で作ったものなのか、notepad.exe など外部から供給されたものなのか、わかりません。
また、どのタイミングで「背面に移動して」しまうのか、わかりません。
「最後に起動したEXE」というのも、「処理の最後に、あるEXEを最前面にしている」のか、「複数のEXEを起動して、一番最後にキックしたEXEを最前面にしている」のか、わかりません。

引用返信 編集キー/
■3762 / inTopicNo.4)  Re[2]: EXEからEXEの起動
□投稿者/ NORTH (2回)-(2007/05/22(Tue) 22:25:21)
No3745 (Jitta さん) に返信
>  うちで発生している、ある現象。
>
>  アプリケーションのランチャと、ラウンチされるアプリケーションがある。
> ランチャはアプリケーション起動後、Hide する。そして、起動したアプリケーションが終了した後、Show する。
> ところが、起動されたアプリケーションが残っているのに、ランチャが現れる。(1)
> おっかしいなぁ?と、起動しているプロセスを、タスク マネージャで監視していると、起動されたアプリケーションが自分のコピーを起動し、そして終了している。
> そりゃ、ランチャが現れるよ。
>
>
>  そんなわけで、現象のうわべだけを見ていても、原因にたどり着いたり、原因を取り除いたりすることはできません。上の、私のところで発生している現象で喩えると、(1)の部分までしか書かれていないわけです。
>  あなたが、原因にたどり着くためにどんなことをしたのか、教えてください。
> 特に、プログラムの処理の流れを教えてください。
> 今書いてあることでは、「別のEXE」は複数あるのか、単数なのか。自分で作ったものなのか、notepad.exe など外部から供給されたものなのか、わかりません。
> また、どのタイミングで「背面に移動して」しまうのか、わかりません。
> 「最後に起動したEXE」というのも、「処理の最後に、あるEXEを最前面にしている」のか、「複数のEXEを起動して、一番最後にキックしたEXEを最前面にしている」のか、わかりません。
>

早速のご解答有り難うございます。
【現象】
アプリケーションは私どもが作成したEXEです。具体的にいいますと「メニュー.EXE」がありまして、
そこからメニューボタンクリックで「受注入力.EXE」を起動します。
そして「受注入力.EXE」にも「発注入力.EXE」を起動するボタンがあります。
そこで発注入力ボタンをクリックすると「発注入力.EXE」が起動しますが、
この発注入力画面が数秒再前面に出ますが、「メニュー.EXE」「受注入力.EXE」の背面に隠れてしまいます。

【起動方法】
・各EXEを起動するのには、Shell関数を使用しています。
・Shell関数は、共通部品用に作成した「共通.DLL」に含んで使用しています。
・ボタンクリックイベント内の各EXEの起動後にもその他処理を行う時もあります。

※この現象は必ず起こるとはかぎりませんが、かなりの頻度で起こっております。
 ご解答よろしくお願い申し上げます。


引用返信 編集キー/
■3797 / inTopicNo.5)  Re[3]: EXEからEXEの起動
□投稿者/ Jitta (330回)-(2007/05/23(Wed) 22:23:32)
Jitta さんの Web サイト
No3762 (NORTH さん) に返信
> ※この現象は必ず起こるとはかぎりませんが、かなりの頻度で起こっております。
やっかいですね。

 最初の投稿には、「最後に起動したEXEをactiveにし」とありますが、これは、具体的にどのように行っているのでしょうか。起動された後、何かのタイミングで、自分で Active にしているのでしょうか。それとも、ハンドルを持っている方が、何かのタイミングで Active にしてあげているのでしょうか。

 実行ファイルの実行は、Shell 関数で行っているとのことですが、これは Win32API の ShellExecute 関数を使用しているということでしょうか。

 分類が「VB.NET」となっていますが、VB6.0 ではなく、VB.NET2002 以降でよろしいですか?(時々間違える人がいるので聞いています)

引用返信 編集キー/
■3880 / inTopicNo.6)  Re[4]: EXEからEXEの起動
□投稿者/ NORTH (3回)-(2007/05/26(Sat) 15:59:26)
No3797 (Jitta さん) に返信
> ■No3762 (NORTH さん) に返信
>>※この現象は必ず起こるとはかぎりませんが、かなりの頻度で起こっております。
> やっかいですね。
>
>  最初の投稿には、「最後に起動したEXEをactiveにし」とありますが、これは、具体的にどのように行っているのでしょうか。起動された後、何かのタイミングで、自分で Active にしているのでしょうか。それとも、ハンドルを持っている方が、何かのタイミングで Active にしてあげているのでしょうか。
>

※「最後に起動したEXEをactiveにし」と書きましたが、誤りで処理は何もしておりません。起動しているだけです。

>  実行ファイルの実行は、Shell 関数で行っているとのことですが、これは Win32API の ShellExecute 関数を使用しているということでしょうか。
>

※Win32API の ShellExecute 関数は使用しておりません。VB.NETのShell関数で行っております。

>  分類が「VB.NET」となっていますが、VB6.0 ではなく、VB.NET2002 以降でよろしいですか?(時々間違える人がいるので聞いています)
>
※VB.NET2005です。

何かわかりましたらご解答よろしくお願い申し上げます。
引用返信 編集キー/
■3918 / inTopicNo.7)  Re[5]: EXEからEXEの起動
□投稿者/ Jitta (344回)-(2007/05/28(Mon) 22:16:19)
Jitta さんの Web サイト
No3880 (NORTH さん) に返信
> ※「最後に起動したEXEをactiveにし」と書きましたが、誤りで処理は何もしておりません。起動しているだけです。
>
>> 実行ファイルの実行は、Shell 関数で行っているとのことですが、これは Win32API の ShellExecute 関数を使用しているということでしょうか。
> >
>
> ※Win32API の ShellExecute 関数は使用しておりません。VB.NETのShell関数で行っております。

ん〜〜〜〜?
これ、フォーカスはどうなってますか?
連続してアプリケーションを実行させたとき、フォーカスを持っているのに全面に表示されないことがあります。
そんな状態なのかなぁ?
それだったら、アプリケーションは自分が一番前にあると思いこんでいるから、いったんほかのアプリケーションをアクティブにしないとだめなんだよね。
んでも、そんな状態になっているって、検知するのが難しいと思う。
引用返信 編集キー/
■3926 / inTopicNo.8)  Re[6]: EXEからEXEの起動
□投稿者/ 片桐 (10回)-(2007/05/29(Tue) 09:24:08)
2007/05/29(Tue) 09:36:27 編集(投稿者)

んー、とっても簡単に考えた方法なんですけど

Shellから起動されるアプリケーションは起動されて閉じるまで最前にあればよいのでしょうか?

ついさっき、別件でサンプル作ってて気がついたんですが、Shell関数オプションnormalで起動して、
起動される側のFormLoadでme.TopMostをTrueすればよいのでは?(汗)

引用返信 編集キー/
■3983 / inTopicNo.9)  Re[6]: EXEからEXEの起動
□投稿者/ NORTH (6回)-(2007/05/30(Wed) 18:26:16)
No3918 (Jitta さん) に返信
> ■No3880 (NORTH さん) に返信
>>※「最後に起動したEXEをactiveにし」と書きましたが、誤りで処理は何もしておりません。起動しているだけです。
>>
> >> 実行ファイルの実行は、Shell 関数で行っているとのことですが、これは Win32API の ShellExecute 関数を使用しているということでしょうか。
>>>
>>
>>※Win32API の ShellExecute 関数は使用しておりません。VB.NETのShell関数で行っております。
>
> ん〜〜〜〜?
> これ、フォーカスはどうなってますか?
> 連続してアプリケーションを実行させたとき、フォーカスを持っているのに全面に表示されないことがあります。
> そんな状態なのかなぁ?
> それだったら、アプリケーションは自分が一番前にあると思いこんでいるから、いったんほかのアプリケーションをアクティブにしないとだめなんだよね。
> んでも、そんな状態になっているって、検知するのが難しいと思う。

フォーカスは背面にいった画面が持っています。
この現象はスペックの高いマシン、(例えばPentium4の3Gで、メモリ1Gbyte)では起こりません。

引用返信 編集キー/
■4027 / inTopicNo.10)  Re[7]: EXEからEXEの起動
□投稿者/ NORTH (7回)-(2007/06/01(Fri) 15:34:35)
No3926 (片桐 さん) に返信
> 2007/05/29(Tue) 09:36:27 編集(投稿者)
>
> んー、とっても簡単に考えた方法なんですけど
>
> Shellから起動されるアプリケーションは起動されて閉じるまで最前にあればよいのでしょうか?
>
> ついさっき、別件でサンプル作ってて気がついたんですが、Shell関数オプションnormalで起動して、
> 起動される側のFormLoadでme.TopMostをTrueすればよいのでは?(汗)
>
この方法だと必ず前面に出る様になるのですが、前面の画面がアクティブにならない場合があります。
背面の画面がアクティブになっている。
(解消される前の現象の画面位置が直っただけで、最前面の画面をアクティブにしたいが、ならない場合がある。)
ですので根本的な解決にはなっておりません。
何かわかりましたら回答お願いします。

引用返信 編集キー/
■4028 / inTopicNo.11)  Re[7]: EXEからEXEの起動
□投稿者/ 片桐 (15回)-(2007/06/01(Fri) 15:39:10)
片桐 さんの Web サイト
前面に出せたのなら、もうちょい?

私なら、前面にした画面Loadイベントの最後で入力コントロールにセットフォーカスします。
Shell起動したプロセスIDがGETできているのなら、そのWindowをActivateにすることもできると思うし……

あくまでもベタな現場検証主義ですみませんです
引用返信 編集キー/
■4031 / inTopicNo.12)  Re[8]: EXEからEXEの起動
□投稿者/ 未記入 (89回)-(2007/06/01(Fri) 17:01:45)
やれやれ・・・。
http://jeanne.wankuma.com/tips/process/activewindow.html

アクティブにすることと最前面に表示することは全くの別のお話です。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -