dポイントプレゼントキャンペーン実施中!

現在、応答なし状態の外部アプリを強制終了させたいのですが上手くいきません。
アプリが応答なしかどうかはSendMessageTimeoutを使用して判断できるます。
しかし、強制終了をPostMessage(hwnd, WM_CLOSE, 0, 0)でしても戻り値は正常なのですがアプリは終了してくれません。(応答なしだから?でも戻り値返してるって事は応答なしじゃないの?謎)

一応、外部アプリが実行中の状態でPostMessageをコールしたらちゃんと終了してくれました。
他にアプリを強制終了させるような関数をあるのでしょうか?あるのであれば教えてください。

よろしくお願い致します。

=== 環境 ===
Windows2000
VC++ 6.0

A 回答 (3件)

TerminateProcess でいけると思います。



応答なしになったアプリは PostMessage で終了させることは出来ません。
(多分です、そう記憶しています)
    • good
    • 0
この回答へのお礼

TerminateProcessを使用して強制終了できました。
ありがとうございます。

お礼日時:2005/12/15 16:38

PostMessageの戻り値は、メッセージキューへのポストに成功したかどうかだけであって、相手から戻された値ではありません。

それはPostMessageがメッセージキューへメッセージをおいた時点で関数が終了するからです。(SendMessageの場合には、相手からの戻り値がSendMessage関数の戻り値となります。ここのところを混同しないように注意が必要です。)

#2さんが言われるように、応答なしのアプリに対していくらPostMessageを行っても応答できない(メッセージキューのメッセージが処理できない)状態ですので無駄です。TerminateProcessを使用すれば無理やりにでも終了させることができます。
    • good
    • 0
この回答へのお礼

PostMessageを実行しても出来ない理由がよくわかりました。勉強になります。
ありがとうございました。

お礼日時:2005/12/15 16:41

 私は、あまり詳しくないのでうまくいくかはわかりませんが、



『Ctrl』キーと
『Alt』キーと
『Delete』キー を同時に押して『強制終了』を選択したら、『強制終了』できるかもしれません。

他の方法は、知りません。
    • good
    • 0
この回答へのお礼

今回、質問したのはプログラム上で強制終了する方法を聞きたかったのです。
しかし、お返事ありがとうございます。

お礼日時:2005/12/15 16:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!