USBメモリの接続を開放するには?

解決


ぷてぃ  2005-12-19 11:39:10  No: 129033

プログラムで、USBメモリ内のテキストファイルを読み込むのですが、
読み込んだ後に、常駐トレイのUSBメモリをはずそうとすると、プログラムが
つかんでいるようで、プログラムを終了させないとはずせません。
プログラム内ではテキストファイルのオープン、クローズくらいしかしてい
ないのですが、何が原因なのでしょうか?
どなたか宜しくお願い致します。


通り巣鴨  2005-12-19 11:56:19  No: 129034

ダイアログ使ってますか?
使っているならファイルを開いた後にダイアログの初期フォルダを
C:\等USB以外ににすることで回避されたと思いますよ。


ぷてぃ  2005-12-19 15:32:50  No: 129035

通り巣鴨さん回答ありがとうございます。
ダイアログは使用していません。
iniファイルにパス(例. E:\)を設定し、そのパスをPublic宣言した変数に持たせています。
あとDir関数を使用(TFilE = Dir(TDiR))し、変数にパスを格納してますが関係ないですよね?


魔界の仮面弁士  2005-12-19 18:18:59  No: 129036

関係ありますよ。

たとえば、"C:\VB" というディレクトリに、"ascii" という
ファイルが一つだけ配置してあったとして、その状態で
  Debug.Print Dir("C:\vb\ascii")
のようなコードを実行すると、"C:\VB" が使用中となり、
ディレクトリを削除する事ができなくなります。


なお、このディレクトリのロック状態を解除するには、
空文字が返されるまで Dir を繰り返し呼び出すか、もしくは、
別のフォルダ(たとえば、App.Path)を Dir しなおせば OK です。


ぷてぃ  2005-12-20 16:06:17  No: 129037

魔界の仮面弁士さん、ありがとうございます。
ローカルのパスをDIRすることで解決致しました。

もう一つ質問なのですが、USBのパスを掴んだままexeを終了させると
タスクマネージャのプロセスにexeが残ったままになることはありますか?


魔界の仮面弁士  2005-12-20 16:25:18  No: 129038

それはありません。
残ってしまうようならば、プログラム側に問題があるのだと思います。

たとえば、非表示のフォームが残っていたりはしませんか?
終了処理の直前(もしくは、FormのUnloadイベントなど)に、
  MsgBox DoEvents     '表示されているフォームの数
  MsgBox Forms.Count  'ロードされているフォームの数(表示/非表示を問わない)
のようなコードを置いて、チェックしてみてください。
(両者が異なる値を返すようであれば、非表示のフォームが残っています)


ぷてぃ  2005-12-20 17:30:46  No: 129039

またまた回答ありがとうございます。
まさしくその通りでした。
MDIフォームを使用していましたので、親を落とせば子も落ちると勝手に
思い込んでいました。


ぷてぃ  2005-12-26 10:18:30  No: 129040

解決時のチェックを忘れていました。
通り巣鴨さん、魔界の仮面弁士さん回答ありがとうございました。


※作成する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。







   このエントリーをはてなブックマークに追加