• ベストアンサー

VBアプリケーションで終了コードを指定する方法

VB6でアプリケーションを作成しますが、 親プロセスに終了コードを返して、Errorの有無を 認識させたいと思います。 VB6で可能でしょうか?? 可能なら、どのような方法があるでしょう?? よろしくお願い申します。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

VB6の機能だけでは無理なように思います WinAPIのExitProcessを使えば出来そうです この場合 Sub Main経由でやったほうがいいかもしれません たとえば 標準モジュールに Public Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long) Public bFlag As Boolean Sub Main()   Form1.Show vbModal   If bFlag Then     ExitProcess 1   End If   ExitProcess 2 End Sub といった具合のコードが記述してあれば bFlagがTrueならば 1を返し それ以外なら 2を返すといったことが可能です バッチファイルから呼び出すならば Text.exe if errorlevel == 3 goto L3 if errorlevel == 2 goto L2 echo "1" goto exit :L2 echo "2" goto exit :L3 echo "3" :exit といったバッチで判定できるでしょう

momomimi
質問者

補足

redfox63 さん、早速のご教示、ありがとうございます。 大変参考になりました。 感謝・感謝 わたしも、API ExitProcess を呼び出して、 実験しているのですが、いまのところ、 問題なく動作しているようです。 ただし、「http://support.microsoft.com/kb/288216/ja」 に、 次のような記述がありまして、心配しています。 『Visual Basic アプリケーションから ExitProcess() API を 直接呼び出した場合、プロセスが正常終了しないことがあります。 場合によっては、ExitProcess() 呼び出しが原因でアクセス違反が 発生したり、プロセスがデッドロックしたりすることがあります。 Visual Basic アプリケーションからの ExitProcess() 呼び出しは、 サポートされていません。 』とありますので、 この、問題の解決方法か、別の安全な方法を模索しているところです。 もし、これに関して情報がありましたら、 ご教示いただけると、助かります。

関連するQ&A

  • コンソールアプリケーションの終了コードの設定方法

    VB.NETでコンソールアプリケーションを作成したいのですが、このアプリケーションの呼び出し結果を判定し、異常であれば、それなりの処置をしたいと考えています。 VBで作成したコンソールアプリケーションで、終了コードを設定することは可能なのでしょうか。(C言語のexit命令のようなものを想定しています)可能であれば、どのような命令を使用するのでしょうか。

  • vbのアプリケーション終了

    RS232cで繋がれた外部媒体と通信を行うアプリケーションをVBで作成しました。 通信を行った(オープン・クローズをきちんと実施)後、endコマンドによりアプリを終了させようとしたんですが、終わりませんでした どんな問題が考えられるのでしょうか? どうかよろしくお願いいたします。

  • VB.NET Webアプリケーションで、コードでボタンのサイズを指定する方法

    VB.NETのWebアプリケーションで、条件によって ボタンの大きさを変える部分を作っております。 ボタンの大きさは普段プロパティで設定しておりますが、 この場合はコードで設定すべきと思うのですが、 どのようにすればよいのでしょう? Windowsアプリケーションと同じように、Button1.Widthなどとやるとエラーになってしまいます。 どうぞよろしくお願いいたします。

  • アプリケーションが終了できない・・・

     こんにちは。  実は、あるネットワーク対応のアプリケーション(ゲーム)なんですが、ネットワークに接続して、プレイした後、アプリケーションを終了すると「応答なし」になってしまいます。「すぐに終了」すると終了したかのように見えるのですが、ctrl+alt+delで見るとプロセスに.exeファイルが残っており、プロセスの終了をしてもリストから消えず、終了できません。ですので、再度そのゲームを実行しようとしても立ち上がらず、再起動するしかないのです。  ネットワークに接続しなければ問題なく終了できるのですが、原因が分かりません。  原因が思い当たる方、又、アプリケーションを完全に終了させる方法(プロセスを終了)させる方法があれば、教えて下さい。  ボクのOSはXP home です。この質問文からも分かると思いますが、あまりこの方面には詳しくないので、質問した場所が間違っていたかもしれませんが申し訳ありません。また、教えて下さる方、ご面倒でも素人相手に説明すると思って教えて頂ければうれしいです。  よろしくお願いします。

  • サブクラス化したアプリケーションの終了方法

    VBで、サブクラス化した1個のウィンドウで構成されるアプリケーションを終了する方法を教えてください。 ホットキーイベントを使うためにサブクラス化したら、endメソッドは使えなくなりました。closeを実行してもウィンドウが閉じません。APIでcloseイベントを発生させて、イベントを受け取った際に、終了させるコードをいろいろと記述してみましたが、どれも失敗してお手上げです。

  • コンソールアプリケーションの終了方法

    コンソールアプリケーションをC言語(Visual-C++6.0)にて開発予定です。このアプリケーションは画面を使わないのでコンソールアプリケーションにする予定です。このプログラムは常駐プロセスにし、コマンドで起動停止を行うようにする予定です。プログラムの起動はバッチファイルを作成し、そこから実行しようと考えていますが、プログラムを停止させるバッチファイルのイメージがわきません。unixの場合は、当該プロセスにSIGTERMを送信する等の方法が考えられるのですが、windowsで常駐のコンソールアプリケーションを停止させるには、どのような方法があるのでしょうか。ご存じの方ありましたら、教えてください。停止させる方法は、外部から常駐プロセスに停止である旨の何らかの事象を送り、それを常駐プロセスがキャッチし、自ら停止することを想定しています。(有無をいわさず殺すことは考えていません) 実行環境:windows2003を想定 開発言語:VC++6.0でC言語

  • 指定時間にアプリケーションを終了したい

    指定時間になったら指定のアプリケーションを終了させるような ソフトはないでしょうか? できれば強制終了ではなく通常の[ファイル]から[終了]という プロセスで終了できる方がいいです。

  • アプリケーションを終了させたい

    Visual C++初心者です。 環境はVisual studio 2005を使用しています。 現在CLRアプリケーションを作っており、押すと終了させるという単純なボタンを作りたいのですが。 検索して調べると、コードに「exit(0);」と書けばいいと書いてあったのでそのようにしてみるとエラーを出しました。(識別子が見つからないとのこと) 終了ボタンをできるだけ簡素なコードで作るにはどうしたらいいでしょうか? よろしくお願いします。

  • 他のアプリケーションの終了処理

    Shell関数を使って起動した他アプリケーションを 今度はその、他アプリケーションからではなく、V Bで作成したメイン画面の終了と同時に終了させた いのですが方法、又は適切な文法が分かりません。 よろしくお願いします。 ※ちなみにVBで作成したメイン画面の終了と同時 に終了させたい他アプリケーションは1つだけです。 しかも決まったパスに置いていて、この先もずっと 固定です。条件としては以上です。

  • WindowsVistaでのVB5.0のアプリケーションについて

    現状、VB5.0で、DAO350.dllと、CFX4032.DLLを使用して開発した アプリケーションがあるのですが、WindowsVista上で動作しません。 VB5.0のディストリビューションウィザードで作成したインストーラ を使用して、インストールした際に、上記の2つのDLLが登録できない といったエラーが発生します。ただ、インストール自体は中断せずに そのままインストールが終了するのですが、アプリケーションを起動 した際に、どうもCFX4032.DLLを使用しているCharFxが正常に動作して いないようなのです。 どなたか同様の経験された方、または、この現象の対応策をご存知の 方がいましたら、ご教授をお願いします。 ものすごくこまっています。 ひょっとしたら、作り変えないといけないのでしょうか。 設計書もあまりなくて、かなり昔に作成したアプリケーションなので 作り変えになると、かなり大変なので、なんとか、DLLの入れ替えとか で対応できないかと悩んでいます。 よろしくお願いします。

専門家に質問してみよう