- - PR -
C# Process.Start()において外部アプリケーションを起動
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-10-17 18:44
Process.Startで外部アプリケーション(やファイル・フォルダ)を起動するソフトを作っているのですが、同パスのものが多重起動できません。
string path1=@"c:\<something>.exe"; string path2=@"c:\<something>.exe"; Process.Start(path1); Process.Start(path2); // ここまではOKなんです、ウィンドウが二つ表示されます Process.Start(path1); // ここですでに起動されたpath1のウィンドウがアクティブになる コードを書き換える前はちゃんと重複起動していただけあってわけが分かりません(汗。 コードを書き換えというのはコードが汚れたので別のフォームに書き換えたというだけで、起動プロセスの部分はProcess.Startを書き換える前も使用していました(まったく同じコードかどうかは自信がないですが、この問題が起こるまでProcess.StartについてはProcess.StartInfoが存在すよということぐらいしか頭に入っていなかったので、とくに設定などせず起動していた…はずです。 CreateNoWindowの値もTrue/False双方試してみましたが結果は同じでした。 いったい何がいけないのでしょうか(汗。 ご存知の方がいらっしゃったらお知恵を拝借させてください。 | ||||
|
投稿日時: 2005-10-17 19:07
こんにちは。
結局3つ起動したいという事ですか? ヘルプに 「プロセスが既に実行されている場合、追加のプロセス リソースは起動されません。代わりに、既存のプロセス リソースが再利用され、新しい Process コンポーネントは作成されません。」 と書いてますが、やりたい事は別ですか? | ||||
|
投稿日時: 2005-10-17 19:52
すばやい回答ありがとうございます
結局はランチャーを作っているんです、ですからボタンを押すたびに新しいウィンドウで起動してくれないと困ると… 「プロセスが既に実行されている場合、追加のプロセス リソースは起動されません。代わりに、既存のプロセス リソースが再利用され、新しい Process コンポーネントは作成されません。」 ということは、無理だと言うことですね↓なぜコード編集前(適当にイメージをつかむために組んだコード)では出来ていたのだろう…と思っていろいろやってみた結果"notepad.exe"と相対パスで渡してやると重複的に起動するらしいです、イメージつかむためだったので"notepad.exe"としか渡していなかったんですね(反省。 WindowScriptHostObjectとか使ってやったほうがいいですかね?WSHとProcess.Start()以外でファイルの関連付けまで考えて起動してくれる関数ってないですよね?↓↓レジストリにいくと .jpg - shell - open - command - の場合と .jpg - <something> <something> - shell - open - command - の場合と…複雑なのであまりやりたくないんです(汗。 | ||||
|
投稿日時: 2005-10-17 22:06
Start() は static の方だったんですね。失礼しました。
それならば複数起動しないとおかしいですね。 最初に提示された path1 と path2 は全く同じパスですか? もし違っていて、path1 の方のアプリケーション自体が多重起動を許していないのなら、無理じゃないかな。(多分) | ||||
|
投稿日時: 2005-10-17 22:25
>Start() は static の方だったんですね。失礼しました。
>それならば複数起動しないとおかしいですね。 前回の書いてからおかしいなと思っていたんです、やはり複数起動が普通ですよね エクスプローラーが重複起動しませんね、他起動しましたorz フォルダのショートカットで重複起動しなくてあせりすぎました(自爆 エクスプローラーは重複起動…するはずですよね(汗。なぜだろう??? Pathはまったく同じパスです(この場合はフォルダのパス) | ||||
|
投稿日時: 2005-10-17 22:52
成程。それは同じパスだからですね。 私の所では「マイコンピュータ」を2回連続でクリックしても、2つ起動しません。他のフォルダでも同じです。 ショートカットからフォルダを一つ開き、別のフォルダに移動してから、また同じショートカットからフォルダを開くと複数起動します。 エクスプローラが「既に同じフォルダが開かれているなら、そっちをアクティブにする」とかしてるんじゃあないですかね。 なのでこの場合は、Process が云々関係ないですね。 | ||||
|
投稿日時: 2005-10-18 06:20
と、いうかエクスプローラーを複数個起動する場合というのがそれほど多くないことに気がつきましたorz
>エクスプローラが「既に同じフォルダが開かれているなら、そっちをアクティブにする」とかしてるんじゃあないですかね。 なのでこの場合は、Process が云々関係ないですね。 たしかにそのようですね、いろいろお手数かけてすいませんでした、ありがとうございます | ||||
|
投稿日時: 2005-10-18 09:09
囚人さんにプレゼントです。
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |