以下のコードを使用して、プレゼンテーション全体で PowerPoint VSTO のさまざまなカスタム作業ウィンドウを管理します。これは正常に機能します。たとえば、ユーザーが新しいプレゼンテーションを開くと、新しいタスク ペインが作成され、他の開いているプレゼンテーション タスク ペインには影響しません。
今、私は次のような状況に遭遇しました。ユーザーがプレゼンテーションを開き、このプレゼンテーション用に PowerPoint で追加のウィンドウを開きます ([表示]、[新しいウィンドウ] をクリックします)。ここで、新しいカスタム作業ウィンドウ (このウィンドウの HWND が異なるため) が作成されますが、代わりに、この作業ウィンドウを他のプレゼンテーション ウィンドウと同じにする必要があります。
質問: 同じプレゼンテーションのすべてのウィンドウで作業ウィンドウを「共有」するにはどうすればよいですか?
Dim CreatedPanes As New Dictionary(Of String, CustomTaskPane)
Public Function GetTaskPane(taskPaneId As String, taskPaneTitle As String) As Microsoft.Office.Tools.CustomTaskPane
Dim key As String = $"{taskPaneId}({Globals.ThisAddIn.Application.HWND})"
If Not CreatedPanes.ContainsKey(key) Then
Dim pane = Globals.ThisAddIn.CustomTaskPanes.Add(New myTaskPaneControl(), taskPaneTitle)
CreatedPanes(key) = pane
End If
Return CreatedPanes(key)
End Function
同じロジックが Excel にも当てはまると思うので、このタグを質問に追加します。