掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
プログラムを終了するには? (ID:22108)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
みなさん、どうもありがとうございます。 >Fusaさん http://delfusa.main.jp/delfusalibrary/20060527212010/SystemUnit/SystemUnit.pas これはインターネットアドレスでしょうか? 開くことができませんでした。 ProcessID はクリエイトプロセスで起動したときの ProcessInformation.hProcess を使ってはだめなのでしょうか? これを使って OpenProcess を呼び出すと hProcess が 0になります。 >deldel さん EnumWindows を使ってウィンドウハンドルをキャッチできす。 ただ、ウィンドウがなければキャッチできません。 つまり、CreateProcess 起動時の StartupInfo.wShowWindow が SW_SHOW の場合には動作するようにはなりましたが、 SW_HIDE の場合にはハンドルが取れなくなります。 それから・・・ 作成しているプログラムAからバッチファイルBを非表示で 実行します。また、BからはプログラムCが呼ばれています。 現在以下のことがわかっています。 実現したいのは2番または3番です。 宜しくお願いします。 1.Bを起動して、タスクマネージャのプロセスで Bを[プロセスの終了]で終了すると、 Bが残る==>NG <CreateProcess で起動時の プロセスID を使って TerminateProcess を呼び出すと同じ症状になる> 2.Bを起動して、タスクマネージャのプロセスで C を[プロセスの終了]で終了すると、 A,Bが消える==>OK <Cを特定することができれば可能ですが、 現状ではその方法がわかりません> 3.Bを起動して、タスクマネージャのプロセスで Bを[プロセスツリーの終了]で終了すると、 A,Bが消える==>OK <実現方法がわかりません> 4.Bのウィンドウが表示するようにするとEnumWindowsを使って ハンドルを取得して SendMessage(h, WM_CLOSE, 0, 0); で クローズする==>OK(ただし、目的は非表示で動作) <CreateProcess で起動時に StartupInfo.wShowWindow := SW_SHOW で起動して、EnumWindows でハンドルを取得し、SendMessage で WM_CLOSE を送ることで実現可能>
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.