0

WindowsXP以降用の独自のグローバルスニペットツールを作成したいと思います。これは常にバックグラウンドツールで実行され、グローバルに定義されたホットキーでポップアップ表示され、置換引数を含むスニペットを選択して、展開されたスニペットを、以前に使用していたコントロールのテキスト入力に貼り付けることができます。それをアクティブにして、最後に、その前のアプリ/入力ボックスに戻ります。

私はアルゴリズムのほとんどの側面を実行する方法を知っていますが、これらのウィンドウベースの機能を実現する方法を知りません。

1-グローバルホットキー:別のアプリのテキストボックスにデータを入力する場合でも機能するWindows(.netから?)のキーシーケンスを定義するにはどうすればよいですか?(通常、これはブラウザウィンドウになります)

2-別のアプリへの貼り付け:貼り付けバッファーとCtrl-Cを使用できますが、余分なキーストロークは避けたいと思います。

3-コントロールを元のウィンドウに戻す:シームレスに入力ストリームに戻ります:どうすればよいですか?実際、ツールがポップアップする前に、ツールはどのようにして自分がどこにいたかを知ることができますか?

私がこれを自分で書きたい理由は、最初に(このような他のツールを作成したいので)方法を学ぶことであり、次に、必要な引数置換を持つスニペットツールを知りません。

したがって、2つの質問は次のとおりです。A)私の一般的なアプローチは何ですか?およびB)上記の項目1から3をどのように達成できますか?

4

1 に答える 1

2

ホットキーをキャプチャするには、グローバルシステムキーボードフックを使用する必要があります。.NET内からこれを行う方法を示すCodeProjectの記事があります。

キーストロークを「トラップ」したら、WindowsAPIを使用して現在のWindowsハンドルを取得できます。ただし、アプリケーションをアクティブ化しないようにします。新しいテキストを貼り付けるだけで、アプリケーションがそれを処理できるようになります。

Windows APIを使用することの欠点は、すべての場合に機能するとは限らず、「壊れた」ケースがますます一般的になっていることです。たとえば、WPFアプリケーションはウィンドウ内の各要素にHWNDを提供しないため、現在の「コントロール」ハンドルを取得すると、適切な要素ではなく、ウィンドウが提供されます。


編集:別の参照ソースは、MSDNMagazineのこの記事です。これは、P / Invokeを使用してC#経由でこれを行う方法を示しています。

于 2009-08-26T17:26:35.670 に答える