Windowsのプロセス関連のAPIを勉強中です。
タスクマネージャでアプリケーションを強制終了させようとすると、正常終了できるときはしようとしますよねぇ。
これはAPIのTerminateProcessでは決してできなそうなのですが、アプリケーションに正常終了を促すのはどうやればよろしいんでしょうか。
自分であれこれ考えた結果、CreateRemoteProcessでExitProcessを実行するスレッドを、対象のプロセスに植え付けるぐらいしか思いつかなかったのですが、これは正しいんでしょうか(試してません)。
No.3ベストアンサー
- 回答日時:
こんにちは。
itohhといいます。>プロセスIDからウィンドウのハンドルを得る方法がわからないのですが、
>どうしたらよいでしょう。
自分でCreateProcessしたときに取得したプロセスIDでしょうか?
それですと簡単です。
ちょっと時間がないので、参考になるサイトを載せておきますのでそちらをご覧になってください。
・Visual C TechTips
URL:http://techtips.belution.com/ja/vc/
・新しいプロセスを作成し、そのプロセスが作成したウィンドウハンドルを取得するには?
URL:http://techtips.belution.com/ja/vc/0024/
EnumThreadWindowsですね。
Get~とかQuerry~とかばっか調べてて、Enumまでは気が付きませんでした。
プロセスが持ってるスレッドのIDはわかるので、これはかなり利用できそうです。
ありがとうございました。
No.2
- 回答日時:
こんにちは。
itohhといいます。VBアプリケーションでもWM_CLOSEメッセージはOKだと思いますよ。
もしかしたら、WM_DESTROYメッセージかもしれませんが。
ウィンドウを持たないアプリケーションについては、難しいですね。
アプリケーションがどういった状態で待ちに入っているか判らないわけですよね?
(メッセージ待ちなのか、ロックオブジェクトで待っているのか、sleepで待っているのか...)
ご自身で作成するアプリケーションならば、
ロックオブジェクトで待っていてSetEventなどで終了を通知されるまで待つ
という方法もあるとは思います。
そっか、VBがWM_CLOSEを受け取れなかったら、ログオフ時に正常終了できるはずがありませんよね。
そうすると、プロセスIDからウィンドウのハンドルを得る方法がわからないのですが、どうしたらよいでしょう。
VCのウィンドウプログラミングはしたことがないので。
No.1
- 回答日時:
こんにちは。
itohhといいます。>タスクマネージャでアプリケーションを強制終了させようとすると、
>正常終了できるときはしようとしますよねぇ。
これは、メッセージを受け付けることが出来る状態だからですよね。
WM_CLOSEメッセージを投げるというのはどうでしょうか?
WindowsプログラムならWM_CLOSEメッセージを受け取る処理は組み込まれていて
当たり前と思うのですが。
それだと、ウィンドウを持っていないアプリケーションやVBアプリケーションに対応できないと思ったので、甘いと思ったのです。
もちろんExitProcessはVBでは正常終了しませんが。
コンソールアプリケーションはやはり正常終了されるのはムリでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) VB.NETの正規表現について 4 2022/04/12 16:54
- Firefox(ファイヤーフォックス) firefoxが頻繁に停止する 1 2023/01/09 10:26
- iPhone(アイフォーン) 容量は半分以上あるのにアプリが強制終了する理由はなんですか? CPUがどのような状態なのでしょうか? 8 2023/08/27 00:50
- その他(コンピューター・テクノロジー) Texについてです。 jpgファイルを貼り付けても表示されないのですが、どうしたら表示できますか? 1 2022/06/30 23:42
- Windows 10 Windowsをキーボードのボタン操作でシャットダウンさせたい 4 2022/11/08 19:23
- その他(ソフトウェア) ソフトが異常終了します 1 2022/08/28 01:41
- Windows 10 バッチファイルでのエクスプローラー終了 1 2022/05/30 14:32
- Chrome(クローム) ブラウザーGoogle Chromeに関する質問 1 2023/07/07 11:22
- Windows 10 パソコンが正常にシャットダウンしない。 こんばんは。 先日WindowsアップデートをしてWindo 2 2023/02/24 23:11
- Windows Vista・XP 電源ボタンでスリープするように設定の場合の強制終了方法 3 2022/06/21 14:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
プロセスIDの取得方法について
-
explorer.exeが異様にメモリを食う
-
タスクマネージャーのプロセス...
-
プロセスIDからウィンドウハ...
-
プロセスのアタッチ・デタッチ...
-
CreateObjectで作成したExcelの...
-
怪しいプロセス教えてください。
-
他のコンピュータのプロセスを取得
-
ADOでアクセスのレコードに...
-
[C#]リモートコンピューターを...
-
C++のプログラムをバックグラウ...
-
Visual C++からpingを実行して...
-
プロセスハンドル or ウインド...
-
POSIX メッセージキュー作成時...
-
VBSからbat実行(WMI)して戻り値...
-
デバックにプロセスをアタッチ...
-
プロセスが実行中かどうか調べ...
-
C#でのbatファイル実行結果取得
-
WSH.Runで待機できません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
explorer.exeが異様にメモリを食う
-
タスクマネージャーのプロセス...
-
プロセスのアタッチ・デタッチ...
-
C#でのbatファイル実行結果取得
-
VB6.0 SHELLで起動...
-
ADOでアクセスのレコードに...
-
Windowsでのfork方法
-
非表示になったエクセルは?
-
共有メモリの同時アクセスにつ...
-
プロセスIDからウィンドウハ...
-
プロセスIDの取得方法について
-
C++のプログラムをバックグラウ...
-
C++でシェルを起動
-
Linuxでのスレッド間メッセージ...
-
OSPFでプロセスを分ける意義に...
-
怪しいプロセス教えてください。
-
Process.Startの戻り値を後で取得
-
SendMessageが失敗するときがある
-
ウィンドウのタイトルからプロ...
おすすめ情報