- - PR -
SendMessage/PostMessageについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-06-22 01:21
いつもお世話になっております。
VB6にて、プロセス一覧を表示&一覧のプロセスを選択して終了させるプログラムを 作成しているのですが、自分のプロセスに対してはよいのですが、他のユーザーの プロセスを終了させる方法を知りたいのですが、ご教示頂けませんでしょうか。 ちなみに、TerminateProcess等の強制終了は使いたくありません。 SendMessageをつかってWM_QUITメッセージは使えないでしょうか。 よろしくお願いいたします | ||||
|
投稿日時: 2007-06-22 01:25
その process の ACL で許可されていないと無理です。
Default だと Administrators group に所属している user じゃないと無理でしょう。おそらく。 _________________ | ||||
|
投稿日時: 2007-06-22 06:33
>SendMessageをつかってWM_QUITメッセージは使えないでしょうか SendMessageを使う方法を思いついたなら、 人に聞くよりも試したほうが早いでしょう。 | ||||
|
投稿日時: 2007-06-22 09:42
れい様 ちゃっぴ様
ご返答ありがとうございます。 プロセスを終了させるユーザーは、Administrators権限を持つユーザーで行わせる 予定です。 FindWindowでウィンドウハンドルを取得して、SendMessageで指定したウィンドウに WM_QUITメッセージを送ることはできることは確認しております。 他のユーザーのプロセスを終了させる際、FindWindowを使って他のユーザーの ウィンドウハンドルを取得することは可能のでしょうか? よろしくお願いいたします。 | ||||
|
投稿日時: 2007-06-22 11:40
こんにちは。
「他のユーザーのプロセス」というのが「別のデスクトップのプロセス」というのであれば、 ウィンドウメッセージを送ることはできないようです。 INFO: サービスとデスクトップ ウィンドウ ステーション
追記: ということは、送信元プロセス/スレッドを送信先のウィンドウステーション/デスクトップに所属させてやれば、メッセージ送信は可能ってことなのかも? [ メッセージ編集済み 編集者: Tdnr_Sym 編集日時 2007-06-22 12:05 ] | ||||
|
投稿日時: 2007-06-22 14:56
それは試して無理だったのでしょうか? それとも試していないのでしょうか? | ||||
|
投稿日時: 2007-06-26 01:15
もう見てないかもしれませんが。
FindWindowsを用いれば他のプロセスのウィンドウも勿論取得できます。 もともとは全てのプロセスのウィンドウを取得できましたが、 ステーションの概念ができてからは 違うステーションのウィンドウは取得できません。 他のプロセスを終了させたい場合、 1 WM_QUIT 2 TerminateProcess の順で呼ぶのが普通だと思います。 PostThreadMessageで呼びます。 普通のまともな窓なら1の段階で終了できますが、 メッセージループが死んでたり そもそもメッセージキューを持っていない場合は 2でないと殺せません。 SendMessageやPostMessageはウィンドウに送るので、 ウィンドウのないスレッドやプロセスは死にません。 WM_CLOSEはウィンドウを閉じたい時に、 システムやユーザーがウィンドウに対して送るメッセージです。 アプリケーションはキャンセルできます。 DefWindowProcにWM_CLOSEが送られるとウィンドウが閉じます。 勿論、アプリケーションによってはこれだけで殺せます。 WM_DESTROYはウィンドウがデスクトップから削除されたことを通知するための メッセージで、システムが対象のウィンドウのWndProcに送ります。 本来はこのメッセージでウィンドウが閉じる必要はありませんが、 リソースのクリーンアップを行ったりするのに使いますので、 場合によってはプロセスを(大抵はエラーを吐きつつ)殺せます。 以上はWin2kの時代の知識です。 XPやVista、.Net Frameworkでの振舞いは自分で調べてください。 最近はセキュリティの問題もあるので 変わっているかもしれません。 メソッドはたかが3種類、メッセージは3種類です。 総当りで試すのもたいした手間ではありません。 ネットにもたくさん資料がありますので、簡単でしょう。 |
1