Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2349287
  • 博文数量: 527
  • 博客积分: 10343
  • 博客等级: 上将
  • 技术积分: 5565
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-26 23:05
文章分类

全部博文(527)

文章存档

2014年(4)

2012年(13)

2011年(19)

2010年(91)

2009年(136)

2008年(142)

2007年(80)

2006年(29)

2005年(13)

我的朋友

分类: WINDOWS

2007-09-15 11:19:43

获取所有VS2003 中的可用命令可以让你一个不落地细究IDE提供的每一个功能, 问题是, 在Tools->Options->General->Keyboard 的对话框中那个显示所有命令的list box 内容太多了, 不能用CTRL+C 把它复制出来, 更不能一个一个用手记下.

Snagit 有一个功能是指定一个带滚动条的窗口, 它会让滚动条从顶至下滚动, 同时连续地捕获屏幕图像, 接缝拼贴的工作由软件自动完成, 你得到的是一个长长的, 包括全部内容的图像.

再用ABBYY 对这个图像文件做OCR 识别, 就可以得到所有的文本形式的命令列表了, ABBYY是目前这个世界上英文字符识别最牛B的软件了, 不光识别率高, 还十分谦虚谨慎, 对于识别电脑文字而不是手写/印刷扫描出来的图像, 它识别率几乎是100%, 而显示出来可能识别有误的列表中, 一经查看, 其实全部都是识别正确的了. 就好像一个人不光漂亮地做完了你交待的活, 还把可能有误的地方一一告诉你, 但你一细看, 即使是这些地方他也都做的几近完美, 这样一款软件, 由不得你不喜欢它.

当然, 对VS2003 来说, 最好的办法是用宏自动获取所有的命令:

只是, 上面的方案对于所有的列表来说是一个通用的可行方案.

例外也是有的, 我曾经在HP的网站上看到一个用applet 实现的带滚动条的窗口, 用这招就不灵, 看来Snagit 可能依赖于滚动条窗口的典型实现.

Sub Tmp()
        Dim all_cmds As Commands = DTE.Commands
        Dim tw As TextWriter = File.CreateText("D:/all_cmds.txt")

        For Each cmd As Command In all_cmds
            'Console.WriteLine(cmd.Name)
            Dim all_binding() As Object = cmd.Bindings

            Dim short_cut As String = String.Empty
            If all_binding.Length > 0 Then
                short_cut = all_binding(0).ToString()
            End If

            If Not cmd.Name Is Nothing Then
                tw.WriteLine(String.Format("{0}{2}" + _
                    "{1}", _
                    cmd.Name, short_cut, cmd.LocalizedName))
            End If
        Next
        tw.Close()

    End Sub


下面是最终获得的全部带名字的命令, 以及它们可能的键绑定
对于英文版的2003来说, 每个命令的Name和 LocalizeName 都是一样的, 似乎微软有两个例外:
Edit.GotoOutputWindowNextLocation    VS   Edit.GoToOutputWindowNextLocation
Edit.GotoOutputWindowPrevLocation    VS   Edit.GoToOutputWindowPreviousLocation
小小的不同, Goto <==> GoTo, Prev <==> Previous
对于前者, 很可能不是有意为之, 应该是微软的疏忽.

有快捷键的共339项, 全部列在前面, 按命令名排序.
后面的没有快捷键的命令共882项, 也按命令名排序.
文件:vs2003_cmds.rar
大小:9KB
下载:下载

阅读(1012) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~