获取正确的shell动词文本以进行操作

时间:2009-05-14 17:25:15

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

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

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

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

所以我的问题是,是否有可能从系统(通过一些调用或注册表)获取启用和禁用的OS语言特定文本?我已经在注册表中搜索了两个字符串而没有任何成功,但我认为有更多多语言经验的人可能会得到答案。另外,我不使用VB(我将使用C ++)所以不要担心在任何特定语言中执行它 - API调用或伪代码都可以。我还需要解决方案在XP和Vista上工作(并且希望Windows 7也是如此)。谢谢!

2 个答案:

答案 0 :(得分:0)

看起来动词的文本可能会通过Registry String Redirection来处理。您需要识别连接组件的CLSID。我戳了一下,但没有发现任何动词注册的网络连接CLSID我遇到过......

答案 1 :(得分:0)

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