• ベストアンサー

自タスクの強制終了の方法につきまして

END命令が正常に動作しないプログラムがあります。 (インストールしたPCによっては正常に動作するのですが) PostMessageでCLOSE命令を発行してもタスクは応答無しになってしまいます。時間がたてば終了はするのですが・・・(終了に至る時間はPCにより様々です) これをどうにかして、瞬時に終了させたいのですが、どの様なことをすればこのタスクを強制的に終了させる事ができるのでしょうか?

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>ExitProcess() >をやって見たいのですが・・引数の uExitCode に何を設定すればいいのでしょうか? お好きな値をどうぞ。 正常終了を表す0を返すアプリが一般的ですけど、APIの仕様的には何でもかまいません。。

jincyan
質問者

お礼

うまくいきました。 根本的問題解決ではありませんが回避策になりました。 有難うございました。

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>尚Wininet.DLL使用時オープンしたものはクローズはしております。オープン&クローズだけでもEND命令は正しく動作しないです。 その時点でおかしいような。 何か手順が足りないのでは? >ExitProcess() >TerminateProcess() >もCLOSEメッセージと最終的に同じ所にたどり着くと他の人に聞いておりますが何か差はあるのでしょうか? だれですか? そんなことを言うのは。 WM_CLOSEのポストとはまったくの別処理です。 WM_CLOSEのポストは、ウィンドウの×ボタンを押すのと同じ処理です。 それに対し、2つのAPIは、呼んだ時点でアプリが終了します。 VBの内部的な終了処理もされずにです。

jincyan
質問者

補足

手順的には正しいと思うのです。何故なら正常に終了するPCのほうが確率的に多いからです。 >もCLOSEメッセージと最終的に同じ所にたどり着くと他の人に聞いておりますが何か差はあるのでしょうか? そんな事を聞かされた私も可愛そうです^^; とにかく、 ExitProcess() をやって見たいのですが・・引数の uExitCode に何を設定すればいいのでしょうか? 。 なんせ、解らないもので申し訳ありません^^; 御手間取らせて申し訳ありません・・・^^;

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>END命令が正常に動作しないプログラムがあります。 普通はこの時点でアプリがおかしいと考えるべきでは? Endというのはアプリの終了の最終手段として用いるものです。 VBアプリはフォームをすべてアンロードすれば終了します。 >PostMessageでCLOSE命令を発行してもタスクは応答無しになってしまいます。 この処理を行う理由がわからないのですが。 自アプリに対してWM_CLOSEを送っているのですか? 強制終了させるのでしたら、一応、 ExitProcess() TerminateProcess() というWindowsAPIがあります。 が、はっきり言ってVBで使うもんじゃありません。 tempフォルダに一時ファイルが残ったり、メモリリークが発生する可能性があります。

jincyan
質問者

補足

Wininet.DLLを使用しましたらEND命令が正常に動作しないパソコンがあるものですから・・(正常に動作するPCのほうが確率的に多いのですが)(OSはWin2K) endの前にCLOSEのメッセージでタスクが終わるかと思って入れてみたのですが終わらなかったもので・・・ ExitProcess() TerminateProcess() もCLOSEメッセージと最終的に同じ所にたどり着くと他の人に聞いておりますが何か差はあるのでしょうか? 要するにENDが処理時間がかかるPCが有りますので、ENDのかわりに強制終了を掛けたいのです。 尚Wininet.DLL使用時オープンしたものはクローズはしております。オープン&クローズだけでもEND命令は正しく動作しないです。