私のC#アプリケーション(Visual Studio 2010 Ultimateを使用)では、ユーザーは特定のファイルを選択する必要があります。私は基本的なファイルエクスプローラーを作成しました。これはほとんど機能しますが、見栄えがよくありません。
標準のWindowsファイルエクスプローラーを使用するように求められました。
私はそれを開く方法を知っています:
Process.Start("explorer.exe");
しかし、どうすればそこからファイルパスを返すことができますか?
私のC#アプリケーション(Visual Studio 2010 Ultimateを使用)では、ユーザーは特定のファイルを選択する必要があります。私は基本的なファイルエクスプローラーを作成しました。これはほとんど機能しますが、見栄えがよくありません。
標準のWindowsファイルエクスプローラーを使用するように求められました。
私はそれを開く方法を知っています:
Process.Start("explorer.exe");
しかし、どうすればそこからファイルパスを返すことができますか?
ファイルを選択するために、NetFrameworkはOpenFileDialogコンポーネントを提供します。こちらのMSDNでリファレンスを確認できます
しかし、基本的に、あなたがしなければならないのは:
OpenFileDialogのインスタンスを作成します
using(OpenFileDialog openFileDialog1 = new OpenFileDialog())
{
初期プロパティを設定する
openFileDialog1.InitialDirectory = "c:\\" ;
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
openFileDialog1.FilterIndex = 2 ;
openFileDialog1.RestoreDirectory = true ;
ShowDialogを呼び出すコントロールを開き、ユーザーからOKが押されるのを待って、選択したファイルを取得します
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
string fileSelected = openFileDialog1.FileName;
}
}
OpenFileDialog()の周りのusingステートメントに注意してください。厳密に必要というわけではありませんが、これによりダイアログの破棄が保証されます。
OpenFileDialogを検討しましたか?
http://msdn.microsoft.com/en-us/library/aa984392(v=vs.71).aspx
OpenFileDialogクラスを使用する必要があります。
「explorer.exe」は%PATH%システム変数にあり、実行可能パスはおそらくWindowsのどこにも保存されていないため(私の意見では間違っているかもしれません)、少し複雑です。
私が知っているすべてのバージョンのWindowsの「explorer.exe」は、%WINDIR%システム変数で定義されたディレクトリにあります。その変数は次のメソッドで取得できます。
Environment.GetEnvironmentVariable()
文字列「explorer.exe」を追加します。
それは簡単な方法でした。
より複雑な方法:
WMIを使用すると、既に実行されているexplorer.exeプロセスのフルパスを見つけることができます。少し複雑ですが、より正確な方法です。
詳細はこちら: 実行中のプロセスのフルパスを取得する方法
たぶん、あなたはあなたの顧客に標準的な探検家の対話を受け入れるように説得することができます。ほとんどの場合、顧客は自分が何を求めているのかを正確に理解していません。
WPFでは、これに従って何かを使用します。
Fromsでは、これに従って何かを使用します。