他のPGを終了出来ないようにするには?


かんべい!  2007-09-11 05:08:44  No: 27709

一度起動させたソフト(IE、Excel等)をクローズボタンを
押しても終了させないようにするには?どうしたらいいのでしょうか?


げー  2007-09-11 05:17:52  No: 27710

大きなお世話プログラムですね。


deldel  2007-09-11 17:37:09  No: 27711

難しそうですね。
それよりも、クローズボタンなどのハンドルを取得して、
ボタンを非表示にして押させない、とするほうが簡単かも。


asp  2007-09-11 18:01:51  No: 27712

APIでシステム全体にフックするのはどうでしょうか。
確か、WM_CLOSEなどのメッセージ群を無視できた気がします。
http://madia.world.coocan.jp/delphi/Tokusen/hook.htm


かんべい!  2007-09-12 06:42:22  No: 27713

http://wisdom.sakura.ne.jp/system/winapi/win32/win12.html

にCの解説ですが、、かなり近いものがありました!
これを参考にがんばってみます。

ありがとうございました!!


Mr.XRAY  URL  2007-09-12 07:29:51  No: 27714

解決方法でなくて申し訳ないのですが、

http://madia.world.coocan.jp/delphi/Tokusen/hook.htm

このサンプルではWH_CALLWNDPROCというフック関数を使用しています。
このフック関数はメッセージの変更ができないようです。また、

http://wisdom.sakura.ne.jp/system/winapi/win32/win12.html

は、質問にある起動しているIEやExecl等の他のアプリに対するサンプルでは
ないようですね。

他のアプリが起動したら(フックして)常に監視するなどで可能かもしれませんが、
具体的な方法は思いつきません。


Mr.XRAY  URL  2007-09-14 07:23:40  No: 27715

>それよりも、クローズボタンなどのハンドルを取得して、
>ボタンを非表示にして押させない、とするほうが簡単かも。

よく考えてみたら,×ボタンを無効にする方法が一番簡単そうですね.
フック(DLL)を作成する必要もないし.
質問された方はクローズボタン(おそらく×ボタンのこと?)なので非表示では
なく,無効ということで.


かんべい!  2007-09-14 07:38:49  No: 27716

すみません、、それって具体的にどうやるんですか?

たとえば、Excelであれば、、

1)Excelのハンドルがあるか(起動したか)?じっと待つ
2)起動を感じたら、DeleteMenuとかで無効にする、、、?

こんな感じなんですか?
初心者にわかるようにお願いします!


Mr.XRAY  URL  2007-09-14 08:32:39  No: 27717

>1)Excelのハンドルがあるか(起動したか)?じっと待つ
>2)起動を感じたら、DeleteMenuとかで無効にする、、、?

ですね。

(1)
現在起動中のアプリだけでいいなら
起動中の可視のウィンドウを調べる(列挙)。

(2)
起動を監視するなら、フック関数(何がいいかな?)でアプリの起動
を監視する。

参考までに、

http://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/T_HookCBTCreate.htm

の WH_CBTフックでHCBT_SYSCOMMANDを捕えて、wParam=SC_CLOSEの時に無効に
することが可能ですが、これはアプリによってはHCBT_SYCOMMANが無効、つまり
このフックを通過しないものがあります(特にマイクロソフトのアプリ)。


Mr.XRAY  URL  2007-09-14 08:36:38  No: 27718

>このフックを通過しないものがあります(特にマイクロソフトのアプリ)。

Windows2k + Office2000では、エクセルは阻止できませんでした。
ワードは阻止可能でした。参考までに。
Delphiで作成した時アプリは阻止可能でした。もちろん×ボタンで終了の場合
です。


かんべい!  2007-09-14 08:43:12  No: 27719

Mr.XRAYさん
ありがとうございます。

(いつもHP覗かせていただいています、、が初心者にはちょっと難しくて、、
でも、、楽しそうで、、
Delphiが再度盛り上がれたらいいのに、
といつも思っているかんべい!です^^
このままじゃ、、D5から次を買う気になれない、、。
って話があっちゃこっちゃですみません。)


Mr.XRAY  URL  2007-09-15 09:38:03  No: 27720

>Delphiが再度盛り上がれたらいいのに、
>といつも思っているかんべい!です^^
>このままじゃ、、D5から次を買う気になれない、、。

グチをこぼしかったら、いつでも喫茶店の方へどうぞ。
独り言でもなんでも歓迎します。
運がよければ、誰かが相手をしてくださるかも(笑)。


もにゃ  2007-09-15 21:55:49  No: 27721

ちょっと興味あるのでお聞きしたいのですが、
どの程度の終了拒否をしたいのでしょうか、
完全なプロセスの終了拒否となると相当難しいと思います。
たとえば、終了されたくないプロセスの一覧を保持して、終了を検知したら再起動をかけるようなものなら、結構簡単だと思いますがそれじゃだめですかね?
そんなアプリを二個起動してお互いを監視し合わせたりすると結構面白いかも。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加