tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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のファイルをダブルクリックして開く操作はしませんので、
なので、気にする必要は無いはずですよね。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。