セキュリティーソフトを作っているのですが
(パスワードを入力しないとその他の操作ができない)
強制終了を防止するにはどうすればいいでしょうか?
キー操作を無効にしようと思い調べたのですができないようなので、
なにか良い案をいただけるとうれしいです。
開発環境等が見えないので、
VB6.0かVB.NETかってとこぐらいははっきりさせましょう。
強制終了とは右上の×ボタンクリックと考えていいのでしょうか?
VB6.0やVB.NET、ウィンドウズフォーム等では消してしまったり
unloadイベント等にメッセージでも表示させて
確認をとって終了させるように記述すればいいのでしょうが
ただ文面からむりくり解釈すると
Webフォームにも聞こえるので
その場合は無理なのかなぁ。よく知りません
一応unloadイベントやデストラクタはありますが・・・
ちなみに右上の×ボタン押下や
まぁ考えないですがタスクマネージャからの強制終了
Alt+F4等の終了は
ユーザーの意思によって押されるものなので
そこは設計側からすれば対象外として
捕らえる事が多いように思います。
意味ちがうかな?
もう少し詳しく書けば誰か詳しい人がお教えくださるでしょう
ちなみにコンセントを抜く電源を切るという
強制終了方法の対策はもうお手上げ
「Ctrl+Alt+Del」や「Alt+F4」によって強制終了されたくないので
すが、キーを無効にできないようなので何かいい案を教えてくれると
うれしいです。
QueryUnload イベントで
UnloadMode の値を見て、
Cancel を True に設定すれば良いのでは?
ただ、 Ctrl+Alt+Del の時も終了させないようにする
っていうのは、ちょっと問題があるかと思います。
Form_QueryUnloadでCancelをTrueにすれば、×ボタン、メニュー、Alt + F4での終了は避けられます。
これらは強制終了ではなく通常の終了手続きだからです。
しかし、『Ctrl + Alt + Del』による強制終了は避けられないと思います。
サブクラス化してWM_DESTROYを潰せば出来るのかもしれないけど、やったことがないので分かりません。
キーダウンイベントでは取れないでしょうか?
Private Sub Form_KeyDown(keycode As Integer, shift As Integer)のような
VB6か.NETか不明ですが、どちらにもあるイベントですので。
shift As Integerというところの
ビット 2 が Alt キーの状態を表しますので
(Altおしっぱなしという意味です)
vbKeyF4との組み合わせで
(VB.NETの場合ならVB定数はないですね調べてください)
イベントをとる事は出来ると思いますがどうでしょうか?
3つのボタンの組み合わせも出来ると思います。
詳しくはKeydownイベントのヘルプみるのが早いですので試してみてください。
ただ、Windowsのショートカットキーとどちらが優先されるのか
なんともいえないところです。
KeyCode = 0 でキーコードをクリアして
他のイベントを引き続き呼んでやればいいのかな。
だんだん脳内でコーディングしはじめているので
参考程度にしていただければと思います
ツイート | ![]() |