2010-11-28 10 views
2

WindowsシェルでF2キーを押してファイル名を編集すると、限られた一連の編集キーがわかります。 CTRL +矢印キー、ホーム、終了、CTRL + X。たとえば、CTRL +右向き矢印を入力すると、カーソルはダッシュの直後に停止しますが、ある期間は停止しません。これらのアクションはカスタマイズ可能ですか?どのWindows APIがファイル名の編集を制御していますか?

直接関連していないが、トピックに役立つと思われる追加情報もありがとうございます。

+0

あなたは何をしたいですか? – tenfour

+0

なぜこれをカスタマイズしますか?特定のアクションが何をするのかについて合理的な期待を持っているユーザーにとって、何が間違っていますか?それが直感的なユーザーインタラクション理論の基本です。 –

+0

私はピリオドが単語を区切る特定のファイル名を持っています。編集モード(F2 /名前変更中)のときにCTRL +右矢印を使って文字列を移動すると、カーソルが停止するようにします。 – Sabuncu

答えて

5

EM_SETWORDBREAKPROCを使用して、編集コントロールのカスタム単語区切りプロシージャを設定できます。 EditWordBreakProcは、ワードブレークが発生する場所を見つける必要があるときにOSが呼び出す、対応するコールバック関数です。ドキュメントから

複数行または単一行エディットコントロールは、ユーザーがCtrlキーとの組み合わせでは、矢印キーを押したときに次の単語にキャレットを移動するには、この関数を呼び出すか、以前のかもしれませんどちらかワード。

キーの組み合わせ自体は直接カスタマイズすることはできません。正当な理由から、ユーザーエクスペリエンスはすべてのアプリケーションで統一されています。もちろん、エディットコントロールをサブクラス化してキーボードメッセージを自分で処理することもできますが、ここではそれが重要ではないと思います。

+0

ありがとうございます。 – Sabuncu

+0

編集コントロールではありません。 –

+0

@ハンス・パッセンジャー:どうですか? ['ListView_EditLabel'](http://msdn.microsoft.com/en-us/library/bb761238%28v=VS.85%29.aspx)は、リスト項目のインプレース編集を開始し、編集のハンドルを返しますコントロール。 – casablanca

2

Windowsのバージョンは重要ですが、一般的にこの動作はネイティブのリストビューコントロールであるSysListView32に組み込まれています。いいえ、キーボードの操作はハードベーキングです。コントロールをサブクラス化することは技術的に可能で、Explorer.exe内に存在するため実用的ではありません。キャレットがラベルの内側にあるという手がかりがないので、メッセージはありません。

+0

ありがとう、ハンス。 – Sabuncu

2

"Windowsシェル"とはWindowsエクスプローラのことですが、あなたが話しているプログラムが何であれ、その答えは同じである可能性が高いです。

Explorerは、単にEDITコントロールを作成し、その位置に移動するだけです。編集の振る舞いは、この在庫システムコントロールと、エクスプローラが独自のインスタンスに追加するロジックを追加したものに由来します。

独自のプロセス内のスレッドに属するEDITコントロールの動作を簡単に変更することはできますが、別のプロセスで行うにはグローバルフックが必要です。グローバルフックを正しく実行し、x86環境とx64環境の両方で機能する作業の量を理解していることを明記します。

WH_CALLWNDPROCを使用して別のプロセスでEDITコントロールの動作を直接妨げることはできませんが、WH_CALLWNDPROCRETを使用してキーボードメッセージを観察し、ウィンドウがあり、EDITコントロールを確認し、EDITコントロールがExplorerに属することを確認し、 EDITコントロールがそのキーボードイベントにどのように反応したかを正確に知っていれば、その期間にバックアップするなどの追加作業を行います。

WH_CBTフックを使用してHCBT_CREATEWNDを監視し、EDITコントロールが作成されるたびにサブクラス化することができます。

このような努力は、おそらく有効ではありません。

+0

感謝します!はい、私はフック/サブクラス化でいくつかのプログラミングを行って、両方が非常にトリッキーであることを知っている。ありがとうございました。 – Sabuncu

関連する問題