GetKeyState を使わせていただきました

  1. pizz 氏がマクロライブラリの「Eclipse風コメントアウト(改)」
    https://www.haijin-boys.com/wiki/Eclipse風コメントアウト(改)
    のページで配布している "GetKeyState" を使わせていただいました。

    マクロ実行時の Shift キーや Ctrl キーの押し下げ状態を取得してマクロの機能を切り替えることができるようになり、ものすごく便利になりそうです。
    まずは最近手をつけていた「カッコをはずす」「カッコを削除/追加」マクロに導入し、「カッコを追加/削除」マクロとして機能を統合することができました。
    https://www.haijin-boys.com/wiki/カッコをはずす

    機能の似たマクロ同士を統合したり、トグル系マクロで ON/OFF を指定して動作させたりと使いでがありそうです。 :)
    マクロをまとめることで、ツールバー上の自作マクロのアイコン数の削減にもつながりますから、これは本当にすばらしい。 :D

    pizz 氏に感謝を申しあげます。!

    p.s. "GetKeyState" を利用したマクロの公開に問題があるようでしたらお知らせ下さいませ。

     |  sukemaru  |  返信
  2. ども、pizzです。
    使っていただき、ありがとうございます。喜んでいただけたようで、私も嬉しいです。
    みなさんに使っていただくために公開したものですので、どうぞご自由にお使いください。

     |  pizz  |  返信
  3. 返信ありがとうございます。
    既存のマクロを魔改造(パワーアップ)するツールとして、本当に便利です。これからのマクロ制作、再編を考えると楽しくてなりません。 XD
    ありがたく大事に使わせていただきます。

    GetKeyState の使い方や注意点について前掲の「カッコを追加/削除」マクロの説明にまとめてみましたが、GetKeyState も includeライブラリのようにマクロライブラリの一項目としてページを設けてもよいのではないでしょうか。
    > みなさんに使っていただくために公開したものですので、どうぞご自由にお使いください。
    本当に広く利用されるべきツールだとおもいます。 :)

    p.s. コメントアウトマクロについては自前の「行コメント」(コメントマーク付け外しの人柱版)を使っていますが、GetKeyState のおかげで //コメント行 を含むブロックをまとめて「強制コメントアウト」して既存のコメント行も // //二重にコメントアウト できるようになりました。 :D
    GetKeyState 最強!

     |  sukemaru  |  返信
  4. リクエストをいただいたので、独立して公開ページを作成しました。
    プログラム本体には変更ありません。

    https://www.haijin-boys.com/wiki/GetKeySatate.exe(キー状態取得実行ファイル)

    すみませんが、リンク先変更をお願いします。
    (一応、Eclipse風コメントアウト(改) からもリンクしてありますので、そのままでも支障はありませんが)

    また、注意事項等お気づきの点がありましたら、直接wikiを編集していただいても構いません。
    (それこそwikiの本来の姿だとも思いますし)

     |  pizz  |  返信
  5. すみません、リンクに失敗しました。
    マクロライブラリの、includeライブラリの下に、
    「GetKeyState.exe(キー状態取得実行ファイル)」を作成してあります。

     |  pizz  |  返信
  6. ご投稿いただきありがとうございます。

    > すみません、リンクに失敗しました。
    すみません、カッコが含まれた URL だと自動リンクの対象外になるようでしたので、カッコが含まれていても大丈夫なようにフォーラムのプログラムを修正しておきました。

     |  Kuro  |  返信
  7. > リクエストをいただいたので、独立して公開ページを作成しました。
    > https://www.haijin-boys.com/wiki/GetKeySatate.exe(キー状態取得実行ファイル)
    > また、注意事項等お気づきの点がありましたら、直接wikiを編集していただいても構いません
    ありがとうございます。 祝・正式(?)公開!
    「使い方」の説明文に加筆&「サンプルコード」の追加をさせていただきました。

    > すみませんが、リンク先変更をお願いします。
    せっかくページを設けていただいたので、「カッコを追加/削除」のほうも直しておきました。 :)

    > リンクに失敗
    > カッコが含まれていても大丈夫なようにフォーラムのプログラムを修正しておきました。
    firefox のロケーションバーからURLをコピーするとカッコ ( ) だけそのままになっちゃうんですよね。自分も気が付いたときしか %28 %29 に書きかえないので…、修正ありがとうございます。

     |  sukemaru  |  返信
  8. 修正ありがとうございます。ただ、私のスペルミスもあって...(^^;
    正しくは下記です。

    https://www.haijin-boys.com/wiki/GetKeyState.exe(キー状態取得実行ファイル)

     |  pizz  |  返信
  9. > リクエストをいただいたので、独立して公開ページを作成しました。

    これは良いものですね~。いやぁ、良いものですね~

    早速使わせていただきました。お礼申し上げます。
    どうもありがとうございます。

     |  シリル  |  返信
  10. ・sukemaru さん
    wikiページの加筆修正、ありがとうございます!!
    すっかり立派なページになりました。

    ・シリル さん
    ご利用ありがとうございます。
    喜んでいただけたようで、なによりです。

    ソースを見るとわかるのですが、引数判断をしてAPIを1つ呼んでるだけの、簡単なプログラムなんですが、何が喜ばれるかって、わかんないもんですねー...

     |  pizz  |  返信
  11. > 何が喜ばれるかって、わかんないもんですねー...

    以前、ブログのコメント欄で Kuro さんと以下のようなやりとりをしたことがありました。

    >> 「マクロの実行時に Shift キーの押し下げ状態を取得して条件分けしたい」
    >> これができると一つのマクロにふたつ詰めこめるようになったりして…、

    > JavaScript でやればいいじゃない?と思いましたが JavaScript ってキーを取得できないんでしたっけ… ^^;
    > でも、できたとしてもマクロってショートカットキーから呼び出すことが多いと思うのですが、Shift と合わせたショートカットキーが全滅しちゃいますから実用性は低いかもしれませんね。

    当時ツールバーアイコンをクリックするときのことしか考えていなかった私は Kuro さんの回答にすっかり納得したのですが、じっさいに GetKeyState を使ってみるとこの便利さはただごとじゃありませんでしたし、当時の懸念も杞憂であったことがわかりました。
    機能切替のためにはショートカットキーを2つ割りあてないといけないと悪く考えてしまうこともできますが、GerKeyState を使っていないマクロでもショートカットキーの割りあてはユーザーの任意によるものですから、ショートカットキーはかならずしも必要なものでもありませんでしたね。
    GerKeyState のページに加筆した内容のとおり、マクロメニューや右クリックメニューからのマクロ実行のときにまで使えて、キーボード派の方にもメリットは大きい気がします。 :)

    マクロを作るさいに「できること」の範囲がひろがりすぎてヤバイです。
    ポップアップメニューにコマンドを詰めこむマクロでも、「通常はコマンド少なめ/修飾キーですべてのコマンドを表示」とかできるので、コマンドが肥大化しすぎた「カッコで囲う」や「引用符/コメント」マクロなども運用しやすくなりそうです(非公開)。 3行マクロ、5行マクロみたいな小マクロも2つ3つを1つにまとめられたりして楽しすぎ。 :D

     |  sukemaru  |  返信
  12. > p.s. コメントアウトマクロについては自前の「行コメント」(コメントマーク付け外しの人柱版)を使っていますが、GetKeyState のおかげで //コメント行 を含むブロックをまとめて「強制コメントアウト」して既存のコメント行も // //二重にコメントアウト できるようになりました。 :D

    「行コメント」(コメントマーク付け外し)マクロは、個人的にかなり使い出があるものとおもってその後うpしました。
    また、新規に「ファイルのフルパスをコピーして閉じる」マクロも投稿しました。「ファイルを開いた時」専用のイベントマクロです。
    以前 "修飾キー+ドラッグ&ドロップ" でファイルのフルパスを文字列として挿入したいとおもっていたのをマクロにしちゃいました。Ctrl と Alt で2回 GetKeyState を呼び出すので修飾キーは長押ししてないとけませんが、一応予定していた使い方はできるかんじです(イベントマクロの仕様上、複数ファイルをまとめて開いたときには1回しかマクロが実行されないので、ひとつずつでしか使えませんが)。

    自分用のマクロでは「行頭か行末 または 選択範囲の始点か終点 に移動」マクロにに Ctrl と Shift を仕込んで選択範囲の前後を1文字ずつ拡張/縮小とか、ポップアップメニューマクロの表示アイテムの切り替えにも使っています。
    これらは本来パパッと起動させたいタイプのマクロに仕込んでいるので、動作速度的にうpするにはいたらないかんじですが、やはり GetKeyState は楽しい。 XD

     |  sukemaru  |  返信
スポンサーリンク