• ベストアンサー

コンパイルしたプログラムが終了しないのですが

VB6.0で教えてください。 コンパイルしてできたプログラムを実行し、フォームの右上にあるコントロールボックスから閉じると、フォームは非表示になるものの、プログラム自体がメモリに残っているようです。 完全に消すには何かコードを追加する必要があるのでしょうか?

  • 11369
  • お礼率72% (115/158)

質問者が選んだベストアンサー

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.2

Endステートメントを実行すると、プログラムが完全に終了します。

11369
質問者

お礼

返答ありがとうございます。 ご指摘いただいた方法で解決しました。 ありがとうございました。

その他の回答 (1)

  • 50100
  • ベストアンサー率28% (99/351)
回答No.1

プログラム内で作成した何らかのオブジェクトのインスタンスが破棄されずに残っているためと思われます。 NewキーワードやCreateObject関数で作成したオブジェクトをMainフォームのForm_QueryUnloadイベント内で破棄するようにしてみてください。 Formオブジェクトなら-->Unloadする その他のオブジェクトなら-->Set XXX = Nothing

11369
質問者

お礼

返答ありがとうございます。 ご指摘のオブジェクトについてですが、プログラム内では特に作成していないと思うのですが、何が原因なのかいまいち特定できません。 APIの参照は関係ないですよね? とりあえず、No.2さんのとおりENDステートメントで解決できました。ありがとうございました。

関連するQ&A

  • 終了してもプログラムが実行したまま(VB)

    非常に時間のかかる繰り返し処理を行なうプログラムを作りました。どのくらい、プログラムが進行しているのかわかりやすくするため、 Progress.Show でProgressという名前のフォームを表示し、そこに、プログラムが何%終わったのか表示するようにしました。 プログラムはDo Loop文が使ってあるので、何%終わったのかを表示するためにLoopした回数を取得して、それをフォームに表示することにしましたが、どこかで調べたら機械は、Do Loopのあいだはフォーム上に文字を表示するのに手が回らないからDoEventsを使ってイベントを実行させなさい、といわれました。 そこまではうまくいきました。プログラムを実行すると、プログラムが実行されて何%終わったかもちゃんと表示できるようになりました。 ところが、プログラムの実行中にフォームの右上の×ボタンを押したところ、フォームは画面から消え、プログラムが終了したように見えるのに、VB Editorでは[実行中]となっており、終わってくれません。ずっとDo Loopが実行されたままです。 Private Sub Form_Terminate() のところに Unload Progress と書いても、「Unloadメソッドは使えません」などというエラー・メッセージが出ます。(フォーム上にボタンを置き、そこをクリックするとUnloadするようにしてみましたがやはり同じことを言われました。) 原因は何でしょうか? フォームをUnloadする、ということの意味をちゃんと理解していないのでいけないのだと思うのですが、調べてもよく言っていることがわかりません。 よろしくお願いします。

  • eclipseのコンパイルエラーについて

    現在、Eclipse+borlandでdirectxのプログラムを作成しています。 しかし、eclipseでコンパイルをするとコンソールに ”プログラムが大きすぎてメモリに入りません”とエラーが 表示されます。 borlandでコンパイルをすると問題なく実行ファイルが生成されます。 eclipseでコンパイルする場合は、設定が必要なのでしょうか?

  • VB 作成したプログラムを終了したのですが、何か残っています。

    こんばんわ。 VB6SP5でプログラムを作っています。 クローズボックスで終了してもVBのツールバーの「終了」ボタンが実行されている時のままになっています。 何かウインドウが残っているのかと思いますが、何か残っているか調べる方法がわかりません。残っているウインドウをdebug.print等で表示する方法はあるのでしょうか?

  • コンパイルできません

    Javaのプログラムをコマンドプロンプトでコンパイルしようとしているんですが、プログラム中で画像データを byte [] imagedata = {-1, -40, -1, -32, 0, 16, 74, ・・・ -1, -39};のように記述しています。 そこで、コンパイルすると「このコードは64Kバイトを超えるサイズのメソッドの生成を必要とします。VirtualMachineは生成されるクラスファイルを拒否します。」と表示されてコンパイルできません。どうしたらいいのでしょうか?わかる方おられましたらお願いします。

    • ベストアンサー
    • Java
  • コンボボックスかリストボックスの使い方

    VB2008でプログラミングしています。 コードと値がセットになっているDBからデータを取得して フォームに表示させるように作成しています。 フォームに表示するのは値で、実行ボタンを押したときには コードを取得したいのですが この場合は、コンボボックスでしょうか?リストボックスでしょうか? 複数選択はできません。 選ばれたコードを元にDBを検索するプログラムが実行されます。

  • ASP.NET/VBでのユーザコントロールを使用したプログラム

    開発環境:VS2005 言語:ASP.NET(VB) 質問させてください。 現在ASP.NETでプログラムを作っています。 プログラム等は経験なくほぼ初心者です。 内容としては テキストボックス(txtB)1個のユーザコントロールを ボタン(btn1)1個とテキストボックス(txtA)1個のフォーム(aspx)に貼り付け、 ボタンを押下することでフォームのテキストボックス内の値を ユーザコントロールのテキストボックスに表示させるという プログラムを作りたいのですがうまくいきません。 色々調べたのですが、 ユーザコントロールのテキスト内の値をフォームのテキストに表示させる方法は あったのですが逆の方法は見つけられませんでした。 説明等わかりにくいところもあるかもしれませんが 回答よろしくお願いいたします。

  • VBプログラムを終了させないようにするには

    VB2005 WindowsXPでの開発を考えています。 メニューボックスは表示せず、終了ボタンからの終了にはパスワードの入力を求めるようにします。 しかしこれだけでは、タスクマネージャ等からの強制終了ができてしまいます。 強制終了も不可能にすることは可能でしょうか? また、できるのであればプログラム起動中は、Windowsの操作(エクスプローラやスタートメニューなど)をできないようにしたいと考えています。現状ではモーダル状態のフォームを最大化して表示させようと思っていますが、他に良い方法を御存知でしたらお願い致します。

  • オブジェクト指向なプログラム

    VB2008で作成しています。 あるコンボボックスは システム内のいくつかのフォームに配置し 同じデータをDBから取得して表示します。 こういう場合、コンボボックスは 共通コントロールとして作成するのでしょうか? VB6では、フォームロードで 共通関数をコールして値を取得していました。 .netでもこのやり方が普通なのでしょうか?

  • 逆コンパイル

    C#で書いた単純なプログラムをコンパイルして、それをテキストエディタで開いたところ、なんだかソースコードのような文字列がかなりそのまま実行バイナリの中に含まれています。 これって簡単に逆コンパイルとかされないでしょうか。 プログラムのバイナリを圧縮や暗号化して、実行時にそれを展開するような方法があると聞いたのですが、それはC#でもできますか? 別のプログラムは圧縮ファイルを解凍するような方法じゃなくて、1つのプログラム内でそういうことできませんか?

  • excel vbaでユーザーフォームに線を書く

    excel vbaでユーザーフォームに線を書きたいのですが (プログラムではなくツールボックスにコントロールを追加し) vbのlineのようなコントロールはあるでしょうか。 環境 Windows XP, Office2003

専門家に質問してみよう