【问题标题】:Getting correct shell verb text for action获取正确的 shell 动词文本以进行操作
【发布时间】:2009-05-14 17:25:14
【问题描述】:

我一直在查看以下 VB 代码:

http://www.codeproject.com/KB/vb/toggleNetworkConn.aspx

如果你在“方法”下查看,你会看到他做了一个测试,看外壳项目动词是“En&able”还是“Disa&ble”——很明显这些是相同的文本网络连接中右键单击上下文菜单中列出的字符串。这种方法的明显问题(正如 CodeProject 的 cmets 中的某人所指出的那样)是这是特定于英语的;根据操作系统运行的语言,它会使用不同的词。程序员的反应是可能使用动词的索引,但这可以说比原始解决方案更糟糕,因为如果它不是正确的命令,您将执行一些任意操作(而且我不相信它可以保证在动词列表中按特定顺序排列)。

所以我的问题是,是否可以从系统(通过一些调用或注册表)获取启用和禁用的操作系统语言特定文本?我在注册表中搜索了这两个字符串都没有成功,但我认为具有更多多语言经验的人可能会有答案。另外,我没有使用 VB(我将使用 C++),所以不用担心用任何特定的语言来做——API 调用或伪代码都可以。我还需要该解决方案同时适用于 XP 和 Vista(希望也适用于 Windows 7)。谢谢!

【问题讨论】:

    标签: windows shell windows-vista windows-xp internationalization


    【解决方案1】:

    看起来动词的文本可以通过Registry String Redirection 处理。您需要确定连接组件的 CLSID。我四处寻找,但没有找到为我遇到的网络连接 CLSID 注册的任何动词......

    【讨论】:

      【解决方案2】:

      我发现的最接近的东西是 IShellFolder 的一部分,特别是 GetCommandString(),它返回一个描述操作的通用字符串 - 在这种情况下,它实际上返回“启用”或“禁用”。这个特定 API 的问题在于它在工作时,实际上并没有在 XP 上返回任何东西——显然,虽然它在旧操作系统上可用,但它实际上只在 Vista 或更高版本上有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-05
        • 2019-12-16
        • 1970-01-01
        • 1970-01-01
        • 2016-07-26
        • 2017-07-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多