- PR -

ALT+F4キー無効化について

1
投稿者投稿内容
masa
常連さん
会議室デビュー日: 2002/07/15
投稿数: 38
お住まい・勤務地: 福岡県
投稿日時: 2007-08-21 11:36
はじめまして ALT+F4キー無効化について悩んでいます。

環境はVB.NET2005でWindowsアプリです。
CreateParamsをオーバーライドする方法などはネットで調べたんですが、
出来れば複数のプロジェクトで使用したいので、共通関数内で
実現させたいと思っているので、各フォームにコーディングするのではなく
共通関数みたいなものでフォームLoad時に呼び出して、ALT+F4キー無効化したいと
考えてるんですが、可能でしょうか?

お解りの方がいらっしゃいましたら、
教えてください。

よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-08-21 12:07
引用:

masaさんの書き込み (2007-08-21 11:36) より:

はじめまして ALT+F4キー無効化について悩んでいます。

環境はVB.NET2005でWindowsアプリです。
CreateParamsをオーバーライドする方法などはネットで調べたんですが、
出来れば複数のプロジェクトで使用したいので、共通関数内で
実現させたいと思っているので、各フォームにコーディングするのではなく
共通関数みたいなものでフォームLoad時に呼び出して、ALT+F4キー無効化したいと
考えてるんですが、可能でしょうか?


[Alt] + [F4] だけ無効にすればよろしいのでしょうか? それともフォームを閉じること自体を抑制したいのでしょうか? 後半部分の説明から前者だと捉えます。

# 前者だとして、それをやる意味があるのかという疑問があります。
# ユーザーのできることを奪っているだけにすぎませんから私は反対です。
# ですが、そういったことは抜きにして回答します。

いくつか方法があります。 基底の Form にそれらの処理を実装して継承する方法が最も単純だと思います。 継承を使いたくない場合は、コンポーネントで Form のキー状態を盗み見るようにするとか方法はいくらでもあると思います。

# "共通関数" という概念自体が古いので、このように継承やイベントを有効活用しましょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
masa
常連さん
会議室デビュー日: 2002/07/15
投稿数: 38
お住まい・勤務地: 福岡県
投稿日時: 2007-08-21 12:38
返信ありがとうございます。

[Alt] + [F4] だけ無効にしたいと考えてます。

>共通関数" という概念自体が古いので、

確かに、私もそう思います。
ただ、既存で出来上がってるシステムがあってそれに組み込む形に
なるので現在ある共通関数に組み込めるのであればその方がリスクがすくないので
そうしたいなと思ってました。

もう少し調べて見ます。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-08-21 13:12
引用:

masaさんの書き込み (2007-08-21 12:38) より:
ただ、既存で出来上がってるシステムがあってそれに組み込む形に
なるので現在ある共通関数に組み込めるのであればその方がリスクがすくないので



メッセージフックしたりDLL読み込んで怪しいことしたりすれば
できなくはないですが、
よっぽどリスク大きいですよ。

共通関数で制御したいなら
全てのフォームにCreateParam型のプロパティを作って
共通関数からそれを設定するようにしてやるとか。

自分の都合に合わせてWindowsの機能を探すのではなくて
Windowsの機能に合わせて自分の都合を修正しないと
最終的にはOS作ることになっちゃいますよ。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-08-21 13:24
引用:

masaさんの書き込み (2007-08-21 12:38) より:

ただ、既存で出来上がってるシステムがあってそれに組み込む形になるので現在ある共通関数に組み込めるのであればその方がリスクがすくないのでそうしたいなと思ってました。


リスクが低くなるかどうかは取るべき方法次第だと思います。 個人的には共通関数の方が記述漏れの温床になり得るのでリスクは高いと思っています。

先の投稿で共通関数という視点で 1 例あげていますが、他にも良い方法はいくらでもあります。 結局のところ 「イベント」 だろうと 「メソッド」 だろうと同じロジックを通っているだから、手間がなくかつ確実な方法を選択すべきだと思います。 今ある実装に手を加えるマネさえしなければ、改変自体に関わるリスクは限りなく 0 に近いです。 何らかの誤解がないことを願いたいです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
masa
常連さん
会議室デビュー日: 2002/07/15
投稿数: 38
お住まい・勤務地: 福岡県
投稿日時: 2007-08-21 19:32
そうですね。
リスクはどれも同じかもしれませんね。

ただ、はんぱじゃなくFormの数が多いので
できれば、現在FormLoadで共通関数を読んでるロジックがあるので
そこに組み込んで出来ればとおもったんですが、
もう少し、いろいろ考えてみようと思います。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-08-21 20:03
引用:

masaさんの書き込み (2007-08-21 19:32) より:
ただ、はんぱじゃなくFormの数が多いので



CreateParamsを既に実装してるフォームばっかりなら別ですが、
してないなら置換とかで自動で挿入すればいいだけでは?
100枚でも1000枚でも、コード挿入の手間は変わりません。

どうやって実装するにしろ、
フォームの動作を変更するわけだから、
動作確認は変更した全てのフォーム、
その影響をうける全てのフォームでやらなきゃいけないわけで。
一部のフォームの確認でOKとするにしたって
それによるリスクの上昇はどの方法でも一緒。
つまりテストの手間はコードを変更する以上、どの方法も一緒。

むしろ、CreateParamsによる方法はみながやってるので、
それ自身による不具合はよっぽど少ないと思いますね。

>そうですね。
>リスクはどれも同じかもしれませんね。

いえいえ。リスクは全然違いますよ。
それにじゃんぬさんも「リスクは同じ」なんて言ってないと思いますよ。
私には実装上のリスクが0になる方法を提示してるように読めますが。
1

スキルアップ/キャリアアップ(JOB@IT)