Focusが他のアプリケーションに移らないようなプログラム(常にZ-orderがTopでしかも
Active)を作りたいのですが、どの様にしたらいいでしょう。教えてください。
環境はWindowsXPで、開発環境はC++Builder6です。
お願いします。
TopMostに関して検索すれば情報は見つかるでしょう。
# そんなプログラムは迷惑です。
# そんなブログラムが二つあったらどうなると思います。
うーん。確かに迷惑ですが、ログインのときに使いたいのでさほど迷惑ではないかと。
ところで、TopMostでは確かに前面には表示されますが、Focusは移ってしまいます。
的外れなことをいっているかも...
参考になるサイトでも良いので教えていただけないでしょうか。
そうかフォーカスは変わってしまうか。
上手くいくかどうかは保障しないけど
A)マウスで他のウィンドーにフォーカスが移動出来ない様ににする
A1)マウスの移動範囲をあなたの希望する範囲(例えばウィンドー自身)に制限する
A2)マウスをキャプチャーしてしまうことで他のウインドーにマウス操作が伝わらな
いようにする
B)キーボード入力で他のウインドーにフォーカス移動できないようにする(例えば、
Ctrl+Tabなど)
ただ、あらゆるキーボード操作が無効には出来る訳ではない(Alt+Del+Ctrl)のであなた
の望みが100%叶うかどうかは私には分からない
A1、A2,Bを組み合わせればある程度のことはできるかもしれません
しかし、Windows の普通の動作を排除する Windows アプリケーションは私は嫌いです
# いっそ、Windows以外のOSを検討してみるとか。
# ご自分だけで使うならミス操作対策程度だと思うので、強制したい背景がよくわからず。
# 書かれてる範囲で見ると、私も迷惑ソフトにしか見えず。
ちなみに「ログイン画面で使う」ってのは、やりたいのは独自の認証とかですか?
ならば、とりあえず「GINA」とか調べてみるとちょっと幸せになれるのかも。(自己責任でどうぞ)
それ以外だと、本質的に、マルチタスクなシステム上で、
たかだか一アプリが全ての制御を簡単に占有できたらダメダメなわけで、
昨今のWindows上でフォーカスすら放さないってのは難しいと思います。
「自分のアプリからフォーカスが離れると困る」という自分だけの都合なら、
フォーカスが外れた時点で終了なりする選択肢もあると思いますが、代替は可能ですか。
ああそうか。フォーカスが移ったら終了すれば良いんだ。有り難うございます。