本日は12/10ですが、この記事はXAML Advent Calendar 2017の6日目の記事です。 遅くなってしまいすみません。。。
当初はFluent Design関係の話題を書くつもりでしたが、結局あまり関係ないテーマになってしまいました。
Ctrl+CやCtrl+Vなど、コピペなどのショートカットを、マウス操作やタッチ操作で実行できるツールを作ってみました。
正直、思い付きで作っただけなので、コードとしては特筆すべき点や面白みはあまりないかもしれません。。。
↓こんな感じのツールです。
作ったもの
コピー/ペーストや、Undo/Redoのコマンド実行用のボタンを、ウィンドウ最前面に表示するだけのツールです。
ソースコード一式は以下の場所に置いています。
releaseページに実行ファイル類をzipにして置いています。
コイツを展開して、exeファイルを適当なパスに配置して実行すれば使えます。
タブレットとかで、タッチパネルオンリーな操作してるときとかは、こいつをタスクバーにピン留めしておけば、こういうショートカットを実行したいときに便利なんじゃないかな、、、と思います。
やっていること
常に最前面に表示する、小さいツールウィンドウを作り、各種ボタンをクリックしたら、Ctrl+C/Ctrl+Vなどの各種ショートカットキーのキー操作をエミュレートしているだけです。
まぁ、言ってしまえばこれだけの処理なのですが、工夫したのは以下の点です。 * ショートカットを実行しようとして、このツールのボタンをクリックすると、このツールがアクティブウィンドウとなってしまう。 * ⇒Ctrl+C/Ctrl+Vなどのコマンドが、このツール自身に対して送信されてしまう。
ということで、SetWindowLong関数を使って、あらかじめこのウィンドウがアクティブにならないように設定しています。 Ctrl+Cなどのショートカットを実行するボタンをクリックしても、このウィンドウがアクティブにならないため、それまでユーザーが操作していたウィンドウに対して、各種ショートカットキーのコマンドを送信できるようになっています。
その他
一応、近年の流行のFluent Design絡みの話題として。 このアプリはWPFで書いていますが、↓に書いた方法を使って、Fluent Design Systemのアクリル風なウィンドウにしてみました。
こういう、常に最前面に置いておきたいツールは、アクリル風なデザインは結構マッチするんじゃないかな、、と思います。