禁用Word应用程序中的控件

时间:2015-02-13 09:34:26

标签: c# vb.net vba ms-word office-interop

我已下载了一个组件(Edraw Viewer Component),用于单词文档查看,自定义等... 我无法发布图片,因为我需要10个声望。 请在following link上的MSDN论坛上找到问题。

(如果图片上写的文字不可见,请在下面找到) 的 TEXT: 选择word文档后,似乎EDRAW查看器控件正在更改单词应用程序的父窗口并将其设置为在主菜单中打开的MDI包含表单(检查图像;您可以看到MS-Word应用程序是嵌入在窗体中。)

真正令人困惑的是,他们如何访问复制,剪切和粘贴按钮并禁用它们。 另请注意,后一个按钮在文档级别禁用,而不是整个应用程序。 (这意味着每当我在菜单外打开另一个MS-Word实例时,都会启用Copy-Cut和paste)。 该软件不使用CustomUI来自定义功能区,也不使用VBA脚本,此外,Word对象模型不会公开与这些按钮相关的任何属性或方法。 请注意,我也尝试使用Windows自动化,访问word应用程序及其所有控件(Tab,Buttons ...),但控件ID永远不可访问。 请查找代码段:

     Private _clientAppRootInstance As AutomationElement = Nothing
       Me._clientAppRootInstance = AutomationElement.RootElement.FindFirst(TreeScope.Children, New PropertyCondition(AutomationElement.NameProperty, "Document1 - Microsoft Word"))
    For Each inst as AutomationElement In Me._clientAppRootInstance.FindAll(TreeScope.Descendants, _
                    New OrCondition( _
                    New PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Button), _
                    New PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Custom) _
                    ))
  If CType(inst.Current, AutomationElement.AutomationElementInformation).Name = "Copy" Then
                        If inst.Current.AutomationId <> "" Then
                            PstBtnID = inst.Current.AutomationId
                        End If
                    End If
                Next
            End If

在此级别,请注意所有inst.Current.AutomationID(代表ControlID,我将允许我访问控制句柄并使用Windows API函数来操纵其行为)始终为空。

我在Windows计算器(calc.exe)上尝试了同样的例子,它像梦一样工作(我可以通过其controlID访问每个按钮)

非常感谢您的帮助。

问候。

0 个答案:

没有答案