🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

4570閲覧

別プロジェクトで生成したEXEファイルを開こうとするとWin32Exceptionが出る

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

1グッド

0クリップ

投稿2023/03/22 08:42

編集2023/03/22 10:05

実現したいこと

複数のVSプロジェクトで個別のEXEファイルを生成し、そのEXEファイルの一覧を表示し、EXEファイル名がクリックされた際に該当するEXEファイルを実行しようとするツールを作成しています。

前提

ソリューションは、ファイル一覧を表示するプロジェクト(主プロジェクト)と、その一覧に表示されるプロジェクト(従プロジェクト)から成り立っています。プロジェクトはすべて、使用するプラグインの関係上 x86(32bit)で動作するようなビルドを行っています。
また、主プロジェクトで生成されるEXEファイルと従プロジェクトで生成されるEXEファイルは同一ではないディレクトリに出力され、主プロジェクトは従プロジェクトが出力したEXEファイルのパスをもとに起動処理を行います。

発生している問題・エラーメッセージ

コードは、ListViewの中に配置したハイパーリンク要素をクリックした際に発火するイベントとして実装しています。
該当のソースコードの通り実行すると、EXEファイルが存在しているにもかかわらず、
System.ComponentModel.Win32Exception (0x80004005): 指定されたファイルが見つかりません。
が例外として出力されてしまいます。

該当のソースコード

C#

1 try 2 { 3 // item.ToolPath には、従プロジェクトの有効なEXEファイルパスが格納されている 4 if (!File.Exists(item.ToolPath)) 5 { 6 MessageBox.Show("実行ファイルが見つかりませんでした。"); 7 } 8 9 using (var proc = new Process()) 10 { 11 proc.StartInfo.FileName = item.ToolPath; 12 proc.StartInfo.Arguments = string.Empty; 13 proc.Start(); 14 proc.WaitForExit(); 15 } 16 17 } 18 catch (Exception ex) 19 { 20 Console.WriteLine(ex); 21 }

試したこと

  • 検索で回避策を探した(有効な方法は見つからなかった)
  • 従プロジェクトのEXEファイルの絶対パスを直接指定した

 → 結果変わらず

  • 従プロジェクトを主プロジェクトの参照に追加し、Threadから起動するようにしてみた

 → System.InvalidOperationException: '同じ AppDomain 内で、複数の System.Windows.Application インスタンスを作成することはできません。' と怒られてしまう

C#

1 Thread thread = new Thread(() => SubProject.App.Main(new string[] { })); 2 thread.SetApartmentState(ApartmentState.STA); 3 thread.Start();

補足情報(FW/ツールのバージョンなど)

開発マシン:Windows 10
ターゲット:.NET Framework 4.8(全プロジェクト共通)
アーキテクチャ:x86(32bit)
IDE:Visual Studio 2022

ネット検索をし、可能性のありそうな方法を試した上での質問ですが、回避策が見つからず考えあぐねている状況です。
お力添えいただけると幸いです。

YAmaGNZを押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2023/03/22 09:08

process.start win32exception などをキーワードにググるといろいろ参考になる記事がヒットしますが、そういうことは当然やった上での質問ですよね? やったけど効果がなかったということであれば、そういう情報も書きましょう。
y_waiwai

2023/03/22 09:35

具体的にどういうパスになってるんでしょうか
退会済みユーザー

退会済みユーザー

2023/03/22 10:01

SurferOnWww様 ご指摘ありがとうございます。仰る通り、検索してもやった上での質問となります。 このような場で質問することに不慣れで、情報が欠落してしまい申し訳ございません。
退会済みユーザー

退会済みユーザー

2023/03/22 10:03

y_waiwai様 主、従プロジェクト共に、 ユーザ名/repos/プロジェクト名/プロジェクト名(サブディレクトリ)/bin/x86/Debug/{ツール名}.exe となっています。 想定する回答でなければコメントいただければと思います。
SaitoAtsushi

2023/03/22 10:44

実行するファイルがネットワークドライブ上にあったりはしませんか?
退会済みユーザー

退会済みユーザー

2023/03/23 00:59 編集

ググって調べたことをやったけど効果がなかったということであれば、そういう情報(どの記事のことをやったのか)も書きましょう。
guest

回答1

0

ベストアンサー

本件、Process.Start()に指定しているパスが相対パスであったことが原因でした。

相対パスである必要があるツールでしたが、本件の回避方法としての解決方法が得られたため本件は解決済みとさせていただきます。
ご指導のほど誠にありがとうございました。

投稿2023/03/23 08:25

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2023/03/24 00:14

質問の「試したこと」に、 > 従プロジェクトのEXEファイルの絶対パスを直接指定した ・・・と書いてあったのはどういうこと?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問