- PR -

オブジェクト毎のInsertキー状態を取得する方法

1
投稿者投稿内容
daikoku
常連さん
会議室デビュー日: 2005/09/22
投稿数: 21
投稿日時: 2009-01-15 11:20
質問させて頂きます。

開発環境
OS:Windows Vista
開発ツール:VisualStudio 2008 SP1
開発言語:C#

WPFアプリケーションで2つのテキストボックスA・Bから
各それぞれのInsertキーの状態を取得し、取得した結果から
キー状態表示やInsertキーON/OFF切替を行いたいと考えて
おります。

というのも、私の認識としてInsertキーの状態というのは
1台パソコンで1つの情報であり全プロセス共通と思いこんで
おりました。
しかし上記のWPFアプリケーションにて、一方のテキストボックスA
にフォーカスが当たっている状態でInsertキーを押すと
現在フォーカスが当たっていないもう一方のテキストボックスBには
Insertキーが効いていない事がわかりました。
つまり、Insertキーの状態は各オブジェクト毎で保持しているという
事になります。

以下、コードでInsertキーの状態を取得する方法はあります。
System.Windows.Forms.Control.IsKeyLocked(System.Windows.Forms.Keys.Insert)
しかし、これで取得できるキー状態はテキストボックスの状態ではない
ようです。

同じような点で調査した事がある方、いらっしゃいましたら
情報を頂けないでしょうか。
宜しくお願い致します。



[ メッセージ編集済み 編集者: daikoku 編集日時 2009-01-15 13:17 ]

[ メッセージ編集済み 編集者: daikoku 編集日時 2009-01-15 13:50 ]
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2009-01-15 18:09
引用:

daikokuさんの書き込み (2009-01-15 11:20) より:
というのも、私の認識としてInsertキーの状態というのは
1台パソコンで1つの情報であり全プロセス共通と思いこんで
おりました。


OS としてそういう情報は保持していません。各プロセスが勝手に扱います。
IsKeyLocked は単純に KeyDown ごとに変更されるトグル状態を取得しているだけで、トグル状態は全てのキーに対して状態が保存されています。

ということを踏まえた上で。
現状の WPF じゃ取得や設定はできないみたいですね。内部に上書きモードを保持するメンバがいますけど公開されていません。
そもそも IME 使って変換経由で入力したときには上書きモードでも強制的に挿入になる(少なくとも XP SP2 / Microsoft Natural Input 2002 で試した限りは)とか言ったバグもあるみたいです。
プロダクト フィードバック センター に要望してみるのもいいかもしれません。
// VS10 は WPF で実装されるそうですから、この辺の意見・バグは優先度が高い…かもしれません。
daikoku
常連さん
会議室デビュー日: 2005/09/22
投稿数: 21
投稿日時: 2009-01-28 09:26
>Hongliangさん
回答ありがとうございますm(_ _)m
理解致しました。
要望の方を出してみたいと思います。

今後の為、その非公開のメンバーについて
ちょっと調べて見たいと思っておりますが、
そのメンバーはMSDNのヘルプに掲載されている
のでしょうか・・・。

それではありがとうございました。
1

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