強制終了時にテキストを保存するには?

解決


Koruto  2004-09-08 00:18:19  No: 85457

フリーズなどで強制終了を余儀なくされた時に、編集中のテキストを保存したいのですが、
少し探してみたところ、どこにもありませんでした。
これは可能なのでしょうか・・
類似したものでもいいので、教えてください。

VB6です


nero  2004-09-08 01:52:36  No: 85458

いくらなんでも無理でしょう。
だいいちフリーズしたかどうかどうやって検知するのでしょう。
プログラムマネージャーが出て来た時にはもう遅いわけですから。
フリーズしないプログラムを書くことが一番ですが、自分のプログラムが原因でなくても
フリーズが起こる場合も有りますね、私はこんなことをして逃げています。
テキストエディターならまず普通に入力している時はフリーズしないでしょうから、
何か特殊な事(たとえばFTPサーバーに直接書き込むとか)をする前にテンポラリーファイルに
テキストの内容を書き込みます。書き込む場所は、App.Pathが良いでしょう。
アプリケーションの終了時、テンポラリーファイルを消します、正常終了です。
次にアプリを立ち上げた時先ずテンポラリーファイルを見て、テンポラリーファイルが
残っていれば、前回が異常終了とみなし、メッセージボックスで前のデータ−を読み込むかどうか聞きます。
これで殆どの場合助かります。


フォレスト  2004-09-08 03:33:16  No: 85459

一応FormのイベントでQueryUnloadってのがあります。

使い方は下記参照。
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Select Case UnloadMode
        Case vbFormControlMenu '×ボタンをクリックした

        Case vbFormCode 'コード内でUnloadステートメントが実行された

        Case vbAppWindows '現在のWindowsセッションが終了

        Case vbAppTaskManager 'タスクマネージャによって終了される

        Case vbFormMDIForm 'MDIフォームが閉じられたため、MDI子フォームが閉じられる

        Case vbFormOwner 'オーナーが閉じられているため、フォームが閉じられている

    End Select
End Sub

  フリーズ後で動作するかは分かりませんが、タスクマネージャによって終了されたときにイベントが発生するので、ここでファイルに書き込めばいいかと思います。
  それかタイマーで一定間隔ごとに書き込むとか・・・。


Koruto  2004-09-08 08:42:25  No: 85460

やはり無理ですかね・・・
とりあえず、タイマーで妥協してみます。
ありがとうございました


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

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






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