HEXA BLOG
ヘキサブログ
プログラム
拡張!~イベント検出編~
こんにちは
シュンスケです✨
前回に引き続き、Visual Studioの拡張機能開発に触れてみます。
今回は、イベントを検出してみます💻
1.ソリューションの作成
Visual Studioを起動
メニューのファイル→新規作成→プロジェクト
今回もC#で書こうと思うので、
C#→Extensibility→VSIX Project
ソリューション名は「VSIXTest2」
2.VSPackageの追加
プロジェクトを右クリック→追加→新しい項目
Visual C# アイテム→Extensibility→Visual Studio Package
ファイル名は、「VSPackageTest.cs」
いろいろと追加されますが、メニューに比べてリソースが少ないぶんシンプルです。
3.解読
VSPackageTest.csを開いてみると、Packageクラスを継承したVSPackageTestクラスが作成され、
コンストラクタと、オーバーライドされたInitializeだけがある状態です。
どうもこのInitializeを起点に拡張できるようです。
4.マニュアルを読む
3で解読した構成を頭に置きながら、公式のマニュアルを読みます。
機械翻訳された日本語でかなり難解ですが、フィーリングで読みます。
「Visual Studio 拡張機能の開発を始める」を見ていくと、サンプルの置き場が案内されています。
これは大いに参考にできそうです。
更に読み進めると、前回のメニューへの追加や、プロジェクトの拡張、ソリューションの拡張などが出てきますが、今回やりたいこととは少し違いそうです。
すると、「Visual Studio の他の部分の拡張」に、「VSPackage を使用した拡張機能の作成」という
項目があり、3で見たようなコードが出てきました。
ここでは、Initializeの中でメッセージボックスを開くコードが紹介されています。
また、Packageに新たなAttributeが付いており、これがPackageが作られて動くタイミングを決めているようです。
[ProvideAutoLoad(UIContextGuids80.SolutionExists)]
これはおそらく、ソリューションが存在すればPackageが作成されるということでしょう。
これでなんとなくPackageを使った拡張開発の構成がわかりました。
Visual Studioは起動中に様々なサービスが立ち上がっており、Packageは窓口になっているので、
サービスを取得して干渉したり、得た情報を使って新たなサービスを作成したりすることで拡張出来るといったところでしょう。
読み飛ばしたものがいくつかあるので、これが全てでは無さそうですが、機能の多くを担っていそうです。
5.APIリファレンスを読む
ここまでわかればあとは根気です。
マニュアルにあったAPIリファレンスを見ていき、今回使えそうなサービスを探します。
サービスはSVsから始まっているようなので、そのあたりを探ります。
また、SVs~から始まるサービスインターフェースに対応したIVs~系を見ていくとインターフェースがわかり、どんな機能を持っているかが推測しやすいです。
ただ、見ていくと、「Microsoft Internal Use Only.」という説明が多く出てくるので、使ってはいけない機能もほどほどあるようです。
で、ありました。「IVsRunningDocTableEvents3」です。OnBeforeSaveといういかにもなコールバックを持っています。
こいつを使う方法を調べるのが良さそうです。
6.サンプル登場
いよいよ大詰め、遂にサンプルの登場です。
探してみると、ありますね。
「Running Document Table (RDT) Event Explorer Sample」
ザックリ読み解くと、サービスプロバイダーなるものからRunningDocTableを作成しつつ、
そこにIVsRunningDocTableEventsを継承して作成した言わばリスナーを登録して、イベントをフックできるようです。
7.コーディング
さて、それでは、コードは以下の通りです。
ファイルの保存を検出して、メッセージを表示してみました。
8.ビルドして実行
実行すると、別のVisual Studioが起動しますが、まだ何も起きません。
ここで、ソリューションを新規で作成します。
cppファイルも作成してみます。作成時にはメッセージは出ません。
保存すると、
出ました❤
今回は以上です。
では🎵
CATEGORY
- about ヘキサ (166)
- 部活動 (6)
- CG (18)
- プロジェクトマネジメント (1)
- 研修 (5)
- 美学 (1)
- いいモノづくり道 (230)
- 採用 -お役立ち情報も- (149)
- プログラム (188)
- デザイン (99)
- ゲーム (274)
- 日記 (1,104)
- 書籍紹介 (113)
- その他 (875)
- 就活アドバイス (20)
- ラーメン (3)
- ライフハック (25)
- イベント紹介 (10)
- 料理 (23)
- TIPS (7)
- 怖い話 (3)
- サウンド (5)
- 子育て (1)
- 筋トレ (1)
- 商品紹介 (21)
- アプリ紹介 (31)
- ソフトウェア紹介 (33)
- ガジェット紹介 (12)
- サイト紹介 (10)
- 研究・開発 (34)
- 回路図 (4)
- アナログゲーム (40)
- 交流会 (21)
- 報告会 (3)
- インフラ (25)
- グリとブラン (6)
- カメラ (9)
- クラフト (27)
- 部活 (14)
- 画伯 (15)
- カレー (6)
- 音楽(洋楽) (6)
- 映画・舞台鑑賞 (43)
- 飼育 (5)
- いぬ (8)
- ねこ (19)
ARCHIVE
- 2024年
- 2023年
- 2022年
- 2021年
- 2020年
- 2019年
- 2018年
- 2017年
- 2016年
- 2015年
- 2014年
- 2013年
- 2012年
- 2011年
- 2010年
- 2009年
- 2008年
- 2007年