タイトル : Re: ファイルが開いているか 投稿日 : 2009/09/24(Thu) 16:08 投稿者 : 魔界の仮面弁士
notepad は、ファイルの内容を表示させるために、指定されたファイルを 読み取りモード(SYNCHRONIZE | FILE_READ_ATTRIBUTES)で開きますが、 読み込み完了後には、そのファイルを即座に閉じています。 エクセル Excel.exe などは、編集中もファイルを開き続ける仕様になっていますが、 少なくともメモ帳 notepad.exe はそうではありません。 メモ帳に表示されたテキストを、ユーザーが閲覧・編集している最中というのは、 そのファイルは既に閉じられており、開かれた状態にはなっていません。 ゆえに、起動したメモ帳を閉じずに開きっぱなしにしておいたとしても、 > すでにtest.txtがひらかれていれば という状態にはなりえません。 もちろん、ファイルを読み込むその瞬間には、ファイルが開かれた状態になりますが、 通常それはごく短時間の事ですので、事前判定しても、あまり役に立たないかと思います。 > test.txtのファイルをダブルクリックして開く操作はしませんので、VB6から開く時にだけの処理で良いです。 呼び出し元である VB 自身にて、同ファイルを開いているかどうかについては、 御自身のプログラム上での Open 処理の事なので、ご自身で管理できますよね。 一方、もしも他のアプリがそのファイルを排他(読取非共有)で開く事があるとすれば、 呼び出された notepad.exe 自体は、排他オープンされたファイルを開く際に --------------------------- プロセスはファイルにアクセスできません。別のプロセスが使用中です。 --------------------------- のメッセージを表示する可能性があります。 (ただし、それを呼び出す Shell 関数自体はエラーなく完了するはずです) とはいえ、他のアプリで開く事があるかどうかという話については、 > test.txtのファイルをダブルクリックして開く操作はしませんので、 なので、気にする必要は無いはずですよね。 |