`
taowen
  • 浏览: 190791 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

你所不知道的CommandBar

阅读更多
Office能够让你写插件。2003系列虽然已经远去,其CommandBar也被2007的Ribbon给替代。但是,你未必就完全了解了这个存在多年看似简单,实则狗屎的CommandBar。

我们翻开手册(其实没有什么手册,在2007之前,office是没有提供给VBA程序员之外的文档的),发现Application对象上有一个CommandBars属性。我们可以调用其Add方法给它添加一个CommandBar。

application.CommandBars.Add("Spike", MsoBarPosition.msoBarTop, false, true);


问题:
我要是第二次启动是不是会创建第二Spike Command Bar,第三次就有三个了?

我们在word中,把command bar显示出来,然后拖拽到底部。

问题:
再次启动word,这个command bar是在顶部还是在底部?

然后我们把我们的插件卸载了。重新启动word 2003。

问题:
Spike Command Bar 还在那里吗?

我们继续翻开手册,发现给command bar添加一个Label也不是什么很难的事情。很简单嘛,一行搞定。

commandBar.Controls.Add(MsoControlType.msoControlLabel, Type.Missing, Type.Missing, Type.Missing, true);


我kao,真TMD的天才。我连Type.Missing都知道用诶。

问题:
这行有错嘛?错误在哪里?

如果要添加的是一个按钮并响应点击事件呢?也很简单,两行搞定

CommandBarButton button = (CommandBarButton) commandBar.Controls.Add(MsoControlType.msoControlButton, Type.Missing, Type.Missing, Type.Missing, true);
button.Click += delegate { MessageBox.Show("Hello!"); };


我要是刚学C#,我都为我自己骄傲。看看,我不但知道它返回的类型是CommandBarButton,还会华丽的delegate语法。

问题:
这行能运行吗?运行起来啥效果?

问题:
第二次启动word,是有一个button还是两个button。


恩,既然自己加一个button能响应点击事件。而且它还有一个参数叫Cancel Default呢。老板正好叫我把Cut按钮给禁用了。简单,找到Cut按钮,响应Click事件,Cancel Default。

CommandBarButton cutButton = (CommandBarButton)application.CommandBars.FindControl(Type.Missing, CUT_BUTTON_CONTROL_ID, Type.Missing, Type.Missing);
cutButton.Click += delegate(CommandBarButton ctrl, ref bool cancelDefault) { cancelDefault = true; };


居然连FindControl都会用,太神奇了。

问题:
这行能用吗?运行起来啥效果?

button还有一个state状态。我一行就能toggle它了:

button.State = button.State == MsoButtonState.msoButtonDown
                               ? MsoButtonState.msoButtonUp
                               : MsoButtonState.msoButtonDown;


You are the genius!~~~

问题:
我打开了两篇文档,两篇文档对应窗口上的button状态是和文档想关联的。也就是互相状态独立。能做到吗?如果不能,要怎么做?

终结者QA

一天下午,我们PM走过来,创建了一个word的快捷方式在桌面上。把word窗口缩放到一个合适的位置。关闭所有的word实例。然后只见他快速地,迅雷不及掩耳的,说时迟那是快的,三击了word的快捷方式:

问题:
请问有几个word进程

问题:
我的状态独立版的command bar还在那吗?为什么?
分享到:
评论

相关推荐

    CommandBar

    The CommandBar control is a full toolbar/menu control which currently offers configurable styles, colours and a full-object model for configuring the buttons and menus. The control can draw in Office ...

    CommandBar (漂亮的.net菜单工具栏)

    CommandBar (漂亮的.net菜单工具栏)

    asp.net辅助工具之CommandBar

    asp.net辅助工具之CommandBar The CommandBar class library extends Windows Forms with classes for CommandBar, ReBar, CoolBar, and bitmaped menu controls. 24 bit alpha channel images are supported on...

    commandbar-launcher

    原料药名称类型描述默认文本字符串或HTMLElement 要在启动器中渲染的元素查找任何内容[ctrl + k] 风格CSS属性启动器的样式替代{}例子默认用法: import Launcher from 'commandbar-launcher';export const ...

    command-bar:macOS状态栏应用程序以显示系统和应用程序命令

    指令列 Command Bar是macOS列出命令的简单状态栏应用程序。 它 特征: 您可以搜索命令 告诉您哪些应用程序使用此命令 告诉您命令是否为全局命令 产品搜寻

    CommandBar:Windows 任务栏的输入框以启动应用程序-开源

    CommandBar 是资源管理器任务栏的 Deskband 对象。 它在任务栏中显示一个 ComboBox 以输入 Commands 。 rolf.wetjen@mail.de

    vscode-commandbar:Visual Studio代码命令栏

    Visual Studio代码命令栏VSCode状态栏中的命令栏。开始使用特征执行命令: 长时间运行的命令终止3种命令类型: exec :执行命令,例如npm run serve (默认) script :执行package.json脚本palette :执行任何或...

    SharePointRibbonVisibility隐藏功能区

    这是一个wsp解决方案,部署到网站中激活功能,就可以在网站管理中进行功能区可见性的设置。总是显示、总是隐藏、或者根据条件隐藏

    C++ Qt Fluent Design 组件库 QFluentWidgets 演示程序

    QFluentWidgets 同时支持 C++ 和 Python,支持 Windows、Linux 和 macOS,包含了数百个现成的组件和示例供你选择,保证能让你找到一个完美的组件作为千里之行的起点。 QFluentWidgets 充分利用了所见即所得的 Qt...

    Git搜索「Git Search」-crx插件

    用光标选择所需的存储库或用户,然后回车 Git Search可以直接在页面上输入,而不需要长时间输入。 例子: git git <你的回购>拉 git 问题 git <your> git git <你的组织> git Git Search在他们的页面上...

    Git Search-crx插件

    用光标选择所需的存储库或用户,然后按Enter。 Git Search无需长时间输入即可直接将您带到该页面。 示例:git 吉特 拉git 发行git 吉特 吉特 吉特 Git Search在其页面...

    CommandBarSetup.msi 命令行工具

    CommandBar windows下的cmd增强工具 可以在当前文件夹下嵌入cmd窗口 不用敲一堆堆cd命令 只有200K 小巧便捷

    Codejock.Xtreme.Toolkit.Pro.v15.3.1

    Xtreme Suite Pro组合了8种我们最受欢迎的组件, Xtreme CommandBar,Xtreme Docking Pane,Xtreme Property Grid,Xtreme Report Control,Xtreme Calendar,Xtreme Task Panel,Xtreme ShortcutBar和 Xtreme ...

    JIDE Action Framework(动作框架)开发员技术手册

    它提供了一个叫命令栏(CommandBar)的组件,可以取代Swing自带的JToolBar和JMenuBar。 杰笛动作框架有各种各样的风格。在当前的版本里,我们提供了Office2003风格、Office2007风格、Visual Studio .NET 风格、...

    COM add-in for Outlook 2000/2002

    !!演示在Outlook中加入CommandBar及属性页。

    VC 作界面库 美化 设计开发必备库Xtreme Toolkit Pro v15破解版

    Xtreme Suite Pro组合了8种我们最受欢迎的组件, Xtreme CommandBar,Xtreme Docking Pane,Xtreme Property Grid,Xtreme Report Control,Xtreme Calendar,Xtreme Task Panel,Xtreme ShortcutBar和 Xtreme ...

    创建SQL Server Management Studio 12插件

    在SQL Server 12中开发自己的SSMS ObjectExplorer \ CommandBar菜单

    EXCEL VBA创建菜单代码

    Dim cbrCmdBar As CommandBar Dim strCBarName As String strCBarName = "xlsht" Set cbrCmdBar = Application.CommandBars.Add(Name:=strCBarName, Position:=msoBarPopup) Set SubMenu = CommandBars...

    约翰苏加斯办公室菜单位查看器__1-41571

    OfficeMenuBitmapsViewer描述在用于Office CommandBar信息的MSDN“地牢”中向下漫游时,我发现Office菜单按钮有很多内置位图。 我过去曾玩过dll资源位图文件,所以我认为这就是所指的内容。 他们引用了一个可供查看...

Global site tag (gtag.js) - Google Analytics