■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#4386-2
ソフト(自作)を終了させようとすると、強制終了の形で終了してしまう
私が自作したフリーソフトを使用して下さった方から、タイトルバーの右端にある
「閉じる(×)ボタン」をクリックして、ソフトを終了させようとすると、
「このプログラムは不正な処理を行ったので強制終了されます」のエラーが出て終了するという報告を受けました。
私の環境では、正常に終了されます。このソフトは約1700本ダウンロードされていますが、
ソフトを終了させようとすると、強制終了されるという報告を受けたのは今回が初めてです。

自作ソフトの構成を簡単に説明すると、
メインフォーム+編集フォーム+検索フォーム+ヘルプフォームという4つのフォームで構成されています。
メインフォームから各フォーム(編集・検索・ヘルプ)を開きます。
編集フォームが開いているときには、メインフォームを操作できないようにしています。
それ以外のフォームでは、メインフォームを操作できます。
ソフト自体を終了させるボタンは、メインフォームの「閉じるボタン」のみです。

メインフォームの「閉じるボタン」をクリックしたときの処理は以下の通りです。
Private Sub Form_Unload(Cancel As Integer)
  '編集フォームを閉じる
    Unload frmDataInput
  '検索フォームを閉じる
    Unload frmDataSearch
  'ヘルプフォームを閉じる
    Unload frmHelp
  'メインフォームを閉じる
    Unload frmMain
End Sub
※フォームを開いている閉じている関係なく最後には、強制的に閉じるようにしています。
 閉じているフォームを閉じようとするとエラーが出るということはあるのでしょうか?

「このプログラムは不正な処理を行ったので強制終了されます」のエラーの詳細は以下の通りです。
「MYSOFT のページ違反です。
モジュール : MSVBVM60.DLL、アドレス : 0177:660697fe
〜以下省略〜 」

自作ソフトの配布には、ディストリビューション ウィザードで
ランタイムを同梱させた形でパッケージして配布しています。

私の環境はWin98SEで、エラーが出ている方の環境はWin98です。

考えられる原因は何でしょうか?

ご存知の方がいらっしゃいましたら、ご教授お願いしますm(_ _)m
#4418-2
RE#4386:ソフト(自作)を終了させようとすると、強制終了(略)
> 私が自作したフリーソフトを使用して下さった方から、タイトルバーの右端にある
> 「閉じる(×)ボタン」をクリックして、ソフトを終了させようとすると、
> 「このプログラムは不正な処理を行ったので強制終了されます」のエラーが出て終了するという報告を受けました。
> 私の環境では、正常に終了されます。このソフトは約1700本ダウンロードされていますが、
> ソフトを終了させようとすると、強制終了されるという報告を受けたのは今回が初めてです。
> (略)
> メインフォームの「閉じるボタン」をクリックしたときの処理は以下の通りです。
> Private Sub Form_Unload(Cancel As Integer)
>   '編集フォームを閉じる
>     Unload frmDataInput
>   '検索フォームを閉じる
>     Unload frmDataSearch
>   'ヘルプフォームを閉じる
>     Unload frmHelp
>   'メインフォームを閉じる
>     Unload frmMain
> End Sub
> ※フォームを開いている閉じている関係なく最後には、強制的に閉じるようにしています。
>  閉じているフォームを閉じようとするとエラーが出るということはあるのでしょうか?
> (略)
> 私の環境はWin98SEで、エラーが出ている方の環境はWin98です。

処理を見る限り、また、1/1700 の確率でしか出てないことを考えると、プログラム自体は
問題無いと思います。

Win98 だと常に落ちるようなら、環境の差になりますから、Win98 でコンパイル&セット
アップの作成をすれば、落ちなくなると思います。

Win98 だからというわけで無ければ、落ちる原因はそのコンピュータにあるでしょう。プロ
グラム作成者としては、不安要素を取り除くぐらいしか出来ません。
以下、念のための作業(といってもあまり思いつきません (^^ゞ)。
・ロードしていないフォームには Unload をかけない
・フォームローカル、クラスローカルのオブジェクトは、その破棄を明示する
 Terminate イベントで、Set xx = Nothing とする。
#4418-0
RE#4386:ソフト(自作)を終了させようとすると、強制終了(略)
> 私が自作したフリーソフトを使用して下さった方から、タイトルバーの右端にある
> 「閉じる(×)ボタン」をクリックして、ソフトを終了させようとすると、
> 「このプログラムは不正な処理を行ったので強制終了されます」のエラーが出て終了するという報告を受けました。
> 私の環境では、正常に終了されます。このソフトは約1700本ダウンロードされていますが、
> ソフトを終了させようとすると、強制終了されるという報告を受けたのは今回が初めてです。
> (略)
> メインフォームの「閉じるボタン」をクリックしたときの処理は以下の通りです。
> Private Sub Form_Unload(Cancel As Integer)
>   '編集フォームを閉じる
>     Unload frmDataInput
>   '検索フォームを閉じる
>     Unload frmDataSearch
>   'ヘルプフォームを閉じる
>     Unload frmHelp
>   'メインフォームを閉じる
>     Unload frmMain
> End Sub
> ※フォームを開いている閉じている関係なく最後には、強制的に閉じるようにしています。
>  閉じているフォームを閉じようとするとエラーが出るということはあるのでしょうか?
> (略)
> 私の環境はWin98SEで、エラーが出ている方の環境はWin98です。

処理を見る限り、また、1/1700 の確率でしか出てないことを考えると、プログラム自体は
問題無いと思います。

Win98 だと常に落ちるようなら、環境の差になりますから、Win98 でコンパイル&セット
アップの作成をすれば、落ちなくなると思います。

Win98 だからというわけで無ければ、落ちる原因はそのコンピュータにあるでしょう。プロ
グラム作成者としては、不安要素を取り除くぐらいしか出来ません。
以下、念のための作業(といってもあまり思いつきません (^^ゞ)。
・ロードしていないフォームには Unload をかけない
・フォームローカル、クラスローカルのオブジェクトは、その破棄を明示する
 Terminate イベントで、Set xx = Nothing とする。
#4456-2
RE#4418:ソフト(自作)を終了させようとすると、強制終了(略)
藤代千尋さん、ご回答ありがとうございました。

> 処理を見る限り、また、1/1700 の確率でしか出てないことを考えると、プログラム自体は
> 問題無いと思います。
> 
> Win98 だと常に落ちるようなら、環境の差になりますから、Win98 でコンパイル&セット
> アップの作成をすれば、落ちなくなると思います。
> 
> Win98 だからというわけで無ければ、落ちる原因はそのコンピュータにあるでしょう。プロ
> グラム作成者としては、不安要素を取り除くぐらいしか出来ません。
> 以下、念のための作業(といってもあまり思いつきません (^^ゞ)。
> ・ロードしていないフォームには Unload をかけない
> ・フォームローカル、クラスローカルのオブジェクトは、その破棄を明示する
>  Terminate イベントで、Set xx = Nothing とする。

とりあえず、プログラム的には問題のないというお言葉を頂き、ホッとしています。
それでは、環境の問題ということで、せめてみたいと思います。
しかし、不安な要素を含んでいる手抜きのコードではいけないと思うので書き換えておきます。
#4456-0
RE#4418:ソフト(自作)を終了させようとすると、強制終了(略)
藤代千尋さん、ご回答ありがとうございました。

> 処理を見る限り、また、1/1700 の確率でしか出てないことを考えると、プログラム自体は
> 問題無いと思います。
> 
> Win98 だと常に落ちるようなら、環境の差になりますから、Win98 でコンパイル&セット
> アップの作成をすれば、落ちなくなると思います。
> 
> Win98 だからというわけで無ければ、落ちる原因はそのコンピュータにあるでしょう。プロ
> グラム作成者としては、不安要素を取り除くぐらいしか出来ません。
> 以下、念のための作業(といってもあまり思いつきません (^^ゞ)。
> ・ロードしていないフォームには Unload をかけない
> ・フォームローカル、クラスローカルのオブジェクトは、その破棄を明示する
>  Terminate イベントで、Set xx = Nothing とする。

とりあえず、プログラム的には問題のないというお言葉を頂き、ホッとしています。
それでは、環境の問題ということで、せめてみたいと思います。
しかし、不安な要素を含んでいる手抜きのコードではいけないと思うので書き換えておきます。
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)