ファイルを作成した後に、そのファイルを引数にしてプロセスを起動する方法
- 題名: ファイルを作成した後に、そのファイルを引数にしてプロセスを起動する方法
- 著者: 末
- 日時: 2008/07/14 13:24:39
- ID: 22426
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: ファイルを作成した後に、そのファイルを引数にしてプロセスを起動する方法
- 著者: Hongliang
- 日時: 2008/07/14 13:36:32
- ID: 22427
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: ファイルを作成した後に、そのファイルを引数にしてプロセスを起動する方法
- 著者: 末
- 日時: 2008/07/14 13:49:17
- ID: 22428
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
お世話になっております。
ファイルを作成した後に、そのファイルを引数にしてプロセスを起動する方法について
質問させて頂きます。
Button を Click されたら、プロセスを起動する処理(引数はファイルパスになります)があるのですが
ファイルが存在しない場合、ファイルを新規作成した後に、プロセスを起動します。
作成するファイルは、中身のない空ファイルです。
ファイルの拡張子が特殊であり、その特殊な拡張子を持つファイルは
起動時に特定ソフトで開くよう、システムを起動する端末には予め設定されております。
(このあたりは、今回の質問と関係ないと思われるのですが)
以下のコードでは
「プロセスはファイルにアクセスできません。別のプロセスが使用中です」の警告メッセージが表示されます。
// ボタンクリックイベントハンドラ
private void Button_Click( object sender, EventArgs e )
{
string strFile = @"C:\Test\Test.aaa";
if ( ! System.IO.File.Exists( strFile ) ) { // ファイルが存在しない場合、新規作成する
File.Create( strFile );
}
// プロセス起動
System.Diagnostics.Process.Start( strFile );
}
ファイルを作成する処理をスレッドにした場合も、同じ結果になりました。
// ボタンクリックイベントハンドラ
private void Button_Click( object sender, EventArgs e )
{
string strFile = @"C:\Test\Test.aaa";
if ( ! System.IO.File.Exists( strFile ) ) { // ファイルが存在しない場合、新規作成する
TasksClass task = new TasksClass( );
task.FilePath = strFile;
System.Threading.Thread thread = new System.Threading.Thread(
new System.Threading.ThreadStart( task.CreateFile ) );
thread.Start( ); // スレッドスタート
thread.Join( ); // 終了するまで待機
thread.Abort( );
if ( ! task.CreateFileResult ) { // 作成に失敗している場合
// file create err
return;
}
}
// プロセス起動
System.Diagnostics.Process.Start( strFile );
}
// ファイル作成用のクラス
public class TasksClass
{
// 作成するファイルのパス(設定専用)
public string FilePath {
set {
this.strFilePath_ = value;
}
}
// ファイル作成結果(読み取り専用)
public bool CreateFileResult {
get {
return this.boolCreateFileResult_;
}
}
private bool boolCreateFileResult_ = false;
private string strFilePath_ = null;
// ファイル作成
// 事前に、作成するファイルのパスを FilePath に設定しておく
public void CreateFile( )
{
this.boolCreateFileResult_ = false;
try {
System.IO.File.Create( this.strFilePath_ );
this.boolCreateFileResult_ = true;
} catch ( Exception ) { }
}
}
どちらもコードも、ファイルは生成されておりますが、Process.Startで警告が出力されます。
既に作成されているファイルを引数にして、Process.Startを実行した場合は、警告が出力されません。
新規作成した後、警告を出さないで、プロセスを起動するには、どのような手段があるか
ご存知の方いらっしゃいましたら、ご教授下さい。
宜しく御願い致します。