一応参照しやすい形としてブログに残しておきます。
1. IVirtualDesktopNotification
との違い
[ComImport] [Guid("c179334c-4295-40d3-bea1-c654d965605a")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IVirtualDesktopNotification { void VirtualDesktopCreated(IVirtualDesktop pDesktop); void VirtualDesktopDestroyBegin(IVirtualDesktop pDesktopDestroyed, IVirtualDesktop pDesktopFallback); void VirtualDesktopDestroyFailed(IVirtualDesktop pDesktopDestroyed, IVirtualDesktop pDesktopFallback); void VirtualDesktopDestroyed(IVirtualDesktop pDesktopDestroyed, IVirtualDesktop pDesktopFallback); void ViewVirtualDesktopChanged(IntPtr pView); void CurrentVirtualDesktopChanged(IVirtualDesktop pDesktopOld, IVirtualDesktop pDesktopNew); }
に仮想デスクトップの名前変更通知が追加されただけのようです。
[ComImport] [Guid("1ba7cf30-3591-43fa-abfa-4aaf7abeedb7")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IVirtualDesktopNotification2 { void VirtualDesktopCreated(IVirtualDesktop pDesktop); void VirtualDesktopDestroyBegin(IVirtualDesktop pDesktopDestroyed, IVirtualDesktop pDesktopFallback); void VirtualDesktopDestroyFailed(IVirtualDesktop pDesktopDestroyed, IVirtualDesktop pDesktopFallback); void VirtualDesktopDestroyed(IVirtualDesktop pDesktopDestroyed, IVirtualDesktop pDesktopFallback); void ViewVirtualDesktopChanged(IntPtr pView); void CurrentVirtualDesktopChanged(IVirtualDesktop pDesktopOld, IVirtualDesktop pDesktopNew); void VirtualDesktopRenamed(IVirtualDesktop pDesktop, [MarshalAs(UnmanagedType.HString)] string name); }
サービス interface は次のとおりこのまま利用できます。coclass (通知を受けるクラス) には IVirtualDesktopNotification
と IVirtualDesktopNotification2
を継承していれば問題ないかと。
[ComImport] [Guid("0cd45e71-d927-4f15-8b0a-8fef525337bf")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IVirtualDesktopNotificationService { uint Register(IVirtualDesktopNotification pNotification); void Unregister(uint dwCookie); }
2. 仮想デスクトップの名前の取得および設定に関して
先に発見されている方がおられるのでそちらを参照してください。
Update to V1.7 · MScholtes/VirtualDesktop@f7c0018 · GitHub
最後に
SylphyHorn のベースになっている VirtualDesktop に PR を投げました。
COM interface の バージョン 2 を使うためのパッチは綺麗でないのですが,手ごろないい実装も思いつかなかったので,このまま PR 送ることにしました。我こそは綺麗にかけるぞ! って人がいたら PR 投げるといいでしょう。
(眠いのでミスあったらすみません,後日直します
7/26 追記: 某 Issue 読んでたらこんな便利なものがあるんですね。すごいですねこれ。