- PR -

既に開いているファイルの取得

投稿者投稿内容
bean
常連さん
会議室デビュー日: 2004/12/01
投稿数: 30
投稿日時: 2008-04-14 01:39
いつもお世話になっております。

VB.NET(Framework2.0)でアプリケーションを作成しております。
(独自ファイルを編集するアプリ)
自アプリを複数起動した場合、後に起動されたアプリは、
既に起動されているアプリのプロセスが利用しているファイルを取得し、
後に起動されたプロセスの開くファイルと同じであれば、
「既にそのファイルは開かれています」とメッセージを出し、
プロセスを終了したいのですが、どのようにプログラムを組めばよいのでしょうか?

ちなみに、既に自アプリが起動されているかのチェックはできています。

どうかご教授下さい。







Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-04-14 07:45
ファイルを排他制御すればいいのでは?
bean
常連さん
会議室デビュー日: 2004/12/01
投稿数: 30
投稿日時: 2008-04-14 10:00
ご回答ありがとうございます。

ファイルはxmlファイルなのですが、
そのようなことできるのでしょうか?

イメージとしては、Excelのような制御を考えているのですが。

[ メッセージ編集済み 編集者: bean 編集日時 2008-04-14 10:02 ]
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2008-04-14 10:20
ファイルであれば、中身を問わずできます

七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2008-04-14 10:21
ファイルであれば、中身を問わずできます

bean
常連さん
会議室デビュー日: 2004/12/01
投稿数: 30
投稿日時: 2008-04-14 22:19
ご回答ありがとうございます。

確かに、ファイルストリームを開くことで排他制御はできました。
しかし、実を言うとxmlは画面に貼り付けた市販コンポーネントが使用します。
※市販コンポーネントのFileOPENメソッドでxmlを開く。
排他制御したあとFileOpenすると自身がファイルを開けなくなってしまいます。

すると既に起動しているプロセスから開いているファイル名を
取得する方法しかないと思うのですが、何か良い方法はないでしょうか?
Azulean
大ベテラン
会議室デビュー日: 2008/01/04
投稿数: 123
お住まい・勤務地: 大阪府
投稿日時: 2008-04-14 22:51
引用:

※市販コンポーネントのFileOPENメソッドでxmlを開く。
排他制御したあとFileOpenすると自身がファイルを開けなくなってしまいます。

すると既に起動しているプロセスから開いているファイル名を
取得する方法しかないと思うのですが、何か良い方法はないでしょうか?


それは「開いているファイル」とは言えないのでは?
市販コンポーネントに渡す時点で(OSからみて)開いていないことが求められているのですし。
#市販のコンポーネントに渡す時に、全く別のアプリによって占有されていた場合はどうなるのかな?と疑問に感じます。

本当の望みは、プロセス間で文字列をやりとりする方法ですか?
リモーティングとか、WCFとか、メッセージとか、メモリマップドファイルとか、多種多様の手段が考えられますが、何を持って「良い方法」と言えるのかは分かりません。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2008-04-15 09:12
引用:

排他制御したあとFileOpenすると自身がファイルを開けなくなってしまいます。



本来は開く際に共有しないよう開くべきです。

引用:

すると既に起動しているプロセスから開いているファイル名を
取得する方法しかないと思うのですが、何か良い方法はないでしょうか?



いいえ。他にも方法はあります。
激しくめんどくさいですが。

プロセスからファイル名を取得する方法もあります。
以下のツールを使うといいでしょう。
http://technet.microsoft.com/ja-jp/sysinternals/bb896655(en-us).aspx

ですが、それがbeanさんの本当に必要としているものかはわかりません。

[ メッセージ編集済み 編集者: れい 編集日時 2008-04-15 09:13 ]

スキルアップ/キャリアアップ(JOB@IT)