1

Windows アプリを別のアプリからシャットダウンする方法を探しています。これを行う方法はありますか?

理想的には、基本的にALT-F4を模倣したり、右上隅の「X」を押すなどの何かが欲しい.

あるいは、すでにこれを行うアプリケーションはありますか? tskill は、私が考えているものには少し厳しすぎます。

4

4 に答える 4

5

編集:少し掘り下げて、Microsoftが推奨するアプローチのMSDN記事を見つけました。

これはWindowsアプリであるため、メインウィンドウにWM_CLOSEメッセージを送信できますが、アプリケーションがWM_CLOSEメッセージの処理をオーバーライドすると、予期しない結果が生じる可能性があることに注意してください。また、 TerminateProcessExitProcessなどのwin32関数を使用すると、dllのグローバルデータが危険にさらされたり、デッドロックが発生したりするなど、不快な副作用(msdnの備考セクションを参照)が発生する可能性があることにも注意してください。

ターゲットアプリケーションをコーディングする責任がある場合は、外部でトリガーできる何らかの形式の組み込みターミネーションメカニズム(ループバックアドレスまたはパイプのマジックパケットなど)を追加することをお勧めします。これにより、アプリケーションが自動的にクリーンアップされたことを確認できます。適切に。

于 2009-02-03T07:32:31.070 に答える
4

あなたの説明によると、これはウィンドウ化されたアプリのように聞こえます。その場合、WM_CLOSEメッセージを送信して、「X」ボタンを押したときの動作を模倣できます。

もう 1 つの方法はTerminateProcessを使用することですが、これはおそらく tskill も同様です。

于 2009-02-03T06:55:38.837 に答える
2

アプリを閉じるためのより強力なコマンドは次のとおりです。

    PostMessage (myhnd,WM_ENDSESSION,TRUE,ENDSESSION_LOGOFF);
于 2009-02-03T08:00:13.653 に答える
1

まず、別の質問に対する私の回答を紹介します。それは Delphi とサービスに関するものでしたが、答えは Delphi 固有でもサービス固有でもありません。つまり、プログラムを正常に停止する一般的な方法はありません。その質問に対する受け入れられた回答は、wm_Closeメッセージをプログラムのウィンドウに投稿することを示しています。

于 2009-02-03T07:15:35.880 に答える