【问题标题】:How to detect if user is interacting with "File Tab" in PowerPoint?如何检测用户是否正在与 PowerPoint 中的“文件选项卡”进行交互?
【发布时间】:2021-08-28 12:13:28
【问题描述】:

我正在寻找一种方法来确定用户何时单击“文件选项卡”(并且可能任何子选项卡都标记以下对话框在 PowerPoint 中显示(见屏幕截图)。

我尝试检查 ActiveWindow.ViewType,但当用户打开对话框时它并没有改变。我还尝试检查窗格中各自的“活动”属性,但当用户在此屏幕上时它也不会改变。

我也试过这段代码,但没有用。

    <DllImport("user32.dll")>
    Private Shared Function GetForegroundWindow() As IntPtr
    End Function

    If GetForegroundWindow() <> Globals.ThisAddIn.Application.HWND Then
         Exit Function
    End If

我注意到在显示此对话框时无法进行键盘输入,但我不知道如何在 VSTO 解决方案中进行检查。显示对话框时,User32 IsWindowEnabled() 返回 True。

有什么想法吗? 谢谢

【问题讨论】:

    标签: .net vba powerpoint vsto


    【解决方案1】:

    Backstage UI 提供了两个您感兴趣的回调:

    • onShow
    VBA: Sub OnShow(contextObject As Object)
    C#: void OnShow(object contextObject)
    Visual Basic: Sub OnShow(contextObject As Object)
    C++: HRESULT OnShow([in] Object *pContextObject)
    
    • 隐藏
    VBA: Sub OnHide(contextObject As Object)
    C#: void OnHide(object contextObject)
    Visual Basic: Sub OnHide(contextObject As Object)
    C++: HRESULT OnHide([in] Object *pContextObject)
    

    Introduction to the Office 2010 Backstage View for Developers 文章中了解更多信息。

    【讨论】:

    • 感谢您的回答。我必须在哪里使用功能区(使用 Visual Designer 制作)将回调放置在 VSTO 解决方案中?或者只有当我将功能区转换为 XML 并添加例如 ?
    • 遗憾的是,并非所有 Fluent UI 功能都在功能区设计器中可用。如果在设计器中找不到,则必须处理 Ribbon XML。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 2019-04-22
    • 2023-04-01
    • 2019-02-09
    • 1970-01-01
    • 2022-07-17
    • 2011-06-10
    相关资源
    最近更新 更多