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)
 - いいモノづくり道 (227)
 - 採用 -お役立ち情報も- (149)
 - プログラム (189)
 - デザイン (99)
 - ゲーム (273)
 - 日記 (1,104)
 - 書籍紹介 (113)
 - その他 (889)
- 就活アドバイス (20)
 - ラーメン (3)
 - ライフハック (25)
 - イベント紹介 (10)
 - 料理 (23)
 - TIPS (7)
 - 怖い話 (3)
 - サウンド (6)
 - 子育て (1)
 - 筋トレ (1)
 - NicO (3)
 - MakeS (9)
 - 商品紹介 (21)
 - アプリ紹介 (31)
 - ソフトウェア紹介 (33)
 - ガジェット紹介 (12)
 - サイト紹介 (10)
 - 研究・開発 (35)
 - 回路図 (4)
 - アナログゲーム (40)
 - 交流会 (21)
 - 報告会 (3)
 - インフラ (25)
 - グリとブラン (6)
 - カメラ (9)
 - クラフト (27)
 - 部活 (14)
 - 画伯 (15)
 - カレー (6)
 - 音楽(洋楽) (6)
 - 映画・舞台鑑賞 (43)
 - 飼育 (5)
 - いぬ (8)
 - ねこ (19)
 
 
ARCHIVE
- 2025年
 - 2024年
 - 2023年
 - 2022年
 - 2021年
 - 2020年
 - 2019年
 - 2018年
 - 2017年
 - 2016年
 - 2015年
 - 2014年
 - 2013年
 - 2012年
 - 2011年
 - 2010年
 - 2009年
 - 2008年
 - 2007年
 







