春🌸もより一層深まりあれほど私を苦しめていた花粉も一段落な今日この頃😷。 お久しぶりです。 good sun☀ことヤマグチです。 今回は創作意欲的な理由から前回の立体造形には続かずに、少しだけプログラムの話題に寄り道をしたいと思います。 そういえばゲーム業界の人って日常でも職業にちなんだ事しているイメージがあるかと思います🤔。 (アーティストさんが絵を書いたりモデリングしたり、ゲームデザイナーさんがゲームに転用できるアイディアに目を光らせていたり) そんな時に果たしてプログラマーって日常でなにか業務にちなんだ事しているの❓と不思議なイメージがあるかもしれませんので私の事例を紹介します。 私の場合は日々欠かさずというほど勤勉ではいられませんが、 日常生活においてプログラムで解決できる不便を見つけたり突如閃いたアイディアを試したりします。 業務程ではありませんが新しい発見があったり、 苦しめられたところを業務で回避出来たり何かしらの糧になります。 という事で今回はそんな日常プログラムの紹介ということで、 碌に先人の偉業を調べる事もなくWindowsのシェル拡張に乗り出すことにしました🐚。 もしかしたら有名な先人のプログラムがあるかもしれません。 どんな拡張なのかというと... 私はどうしても整理が苦手でファイルが散乱します🗃。 そして長い年月が経つとファイル名だけではそのファイルが何者なのかわからなくなります。 対策として大切なファイルにメモを書いておいて、 マウスオーバーした時にポップアップされたら助かるなと思い簡単に作れるならやってみようという流れです。趣味プログラムでは開発の簡単さを最優先にする傾向がありますので今回は簡単開発の代名詞C#を外せません。 ちょろっと調べてみるとSharp Shellというものが見つかりました。 さらにもう少しやりたいことについて調べてみるとほんの少し改変するだけで使えるような紹介がCode Projectにありました。 インターネットさん本当にありがとうございます。 https://www.codeproject.com/Articles/573392/NET-Shell-Extensions-Shell-Property-Sheets https://www.codeproject.com/Articles/527058/NET-Shell-Extensions-Shell-Info-Tip-Handlers ページを軽く読んでみて簡単に実装出来る事が分かったので、これらを参考に作りたい機能を実装してみます。 仕組みはこんな感じです。 メモ情報の書き込み削除にproperty sheetsのシェル拡張を利用してメモ情報編集インターフェースを用意し、 結果を隠しファイルとして用意したメタファイルに書き込みます。 shell info tip handlersのシェル拡張でマウスオーバーしたらメタファイルの中身をチェックして該当ファイルのメモを表示します。
そして出来上がったものがこちらになります?! https://github.com/hexagit/tooltips 流石C#‼プログラム自体は簡単に書き終わりました。 参考ページを見ながらserver managerで動作確認してみます。 ここで躓きまして、sever managerが無い!となって長い事探すことになりました。 server managerはnugetでSharpShellを入れる事でビルド後のbinにこっそり存在していました。 起動後dllをドラッグ&ドロップしてからinstallとregistrationすると簡単に動き始めます。
その後多少の不具合を修正して第一弾完成です。 ファイルを右クリックしてプロパティの中にMessage Metaのタブが増えていてメモを書けるようになっています。 本当は改行したかったのですがどうしてもEnterの入力をプロパティのOKに持っていかれてしまうので断念しています。
そしてメモを書き込んだファイルのアイコンにマウスオーバーするとこんな感じでメモの内容が見えます。
それっぽく動きますね。 一先ず目的達成です🎊。 仕組み的には欠点があってメモを書き込んだファイルが移動したり、削除されたりするとゴミが残るので定期的にクリーニングが必要になります。 その辺は今後の課題ですね、プログラム的にはクリーニング用の準備だけしています。 という事で折角なのでGit Hubにプロジェクト掲載してみました。 興味が湧きましたら覗いてみてください👀。 ※注意! 実際にビルドして試す場合は以下の様に署名ファイルを作って下さい。
免責事項としましてMITライセンスにて公開しますのでご自身の責任においてご利用下さいますようお願い申し上げます🙇。 これで少し謎に包まれたプログラマーが日常でどんな事を考えているかが垣間見えればと思います🕵。 では🖖
