fuinei 发表于 2012-4-18 09:56:29

[已解决]如何查询XP菜单和对话框中所用的语言

本帖最后由 fuinei 于 2012-4-23 15:01 编辑

各位好,由于公司部分电脑OS为英文版+汉化包的方式安装,在安装部分非多国语言版的软件时需根据当前用户语言进行选择性安装,请问AU3能否查询Windows XP菜单和对话框中所用的语言呢?
补充一下,没有安装MUI包的系统看不到菜单和对话框中所用的语言信息

502762378 发表于 2012-4-18 14:56:44

没有安装你所谓的MUI包,也不知道是不是楼主所要,最后谢下Q为1112992的朋友帮忙测试英文操作系统
$strComputer = "."
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL")
For $objItem In $colItems
                If $objItem.OSLanguage = 2052 Then
                  MsgBox(1,"","您使用的是中文操作系统")
          ElseIf $objItem.OSLanguage = 1033 Then
                        MsgBox(1,"","您使用的是英文操作系统")
                Else
                  MsgBox(1,"","您自己到以下网站查您的系统语言代码吧.."&@CRLF&"http://msdn.microsoft.com/en-us/library/aa394239.aspx")
                EndIf
Next

fuinei 发表于 2012-4-18 15:47:55

回复 2# 502762378

谢谢502762378兄的回复,上面的WMI语句只能判断系统内核所使用的语言,其返回结果与系统自带的宏@OSLang相同,在我的测试环境(英文版OS+汉化包-界面为中文)其返回值仍为英文操作系统。

3mile 发表于 2012-4-18 17:33:20

由于不是英文系统+汉化包.
纯猜,不知道结果#include <array.au3>

$Language=DllCall('kernel32.dll', 'dword', 'GetSystemDefaultUILanguage')
_ArrayDisplay($Language)

fuinei 发表于 2012-4-18 18:18:19

回复 4# 3mile

谢谢3mile元老的指导,该方式返回的值仍与@OSLang效果相同,不知有没有哪位兄弟有好的方法呢?如有请指导,谢谢!

502762378 发表于 2012-4-18 18:30:32

试着监控下注册表以下的变化,如果还不行那没折了
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

netegg 发表于 2012-4-18 18:38:00

_WinAPI_GetUserDefaultUILanguage
_WinAPI_EnumResourceLanguages
_WinAPI_EnumUILanguages
挑一个也许能对上,不知道到底什么情况

fuinei 发表于 2012-4-19 11:37:31

回复 7# netegg

谢谢netegg元老的指导,没有找到函数_WinAPI_GetUserDefaultUILanguage,而函数_WinAPI_GetUserDefaultLCID返回值为系统区域选项中“标准和格式”设置所对应的值
根据帮助信息,_WinAPI_EnumResourceLanguages作用为枚举特定语言的资源, 类型与名称, 以及相关的二进制模块,根据帮助信息无法确定模块句柄,使用示例测试了一下返回信息仍与@OSLang相同
_WinAPI_EnumSystemLocales作用为枚举操作系统安装或支持的区域设置,测试不能列出当前的设置情况

fuinei 发表于 2012-4-19 12:06:54

回复 6# 502762378

我对比了中文和英文菜单时的注册表键名及键值,其内容完全一样

502762378 发表于 2012-4-20 14:04:12

回复 9# fuinei


    http://www.microsoft.com/china/windows2000/overview/MUI_cn.mspx#q03

fuinei 发表于 2012-4-20 18:44:00

回复 10# 502762378

谢谢指导,netegg元老提及过GetUserDefaultUILanguage函敉但帮忙中没有找到相关信息,奇怪~~~

502762378 发表于 2012-4-20 18:47:21

回复 11# fuinei


    貌似可以注册表读取
http://technet.microsoft.com/zh-cn/ms905328

netegg 发表于 2012-4-23 09:00:00

回复 11# fuinei #Include <WinAPIEx.au3>
_WinAPI_GetUserDefaultUILanguage()

XiaoFang 发表于 2012-4-23 10:04:23

可以从注册表中找的的把你可以去网上下个注册表跟踪软件

fuinei 发表于 2012-4-23 13:35:01

回复 13# netegg

该代码在3.3.7.15中报错(提示 _WinAPI_GetUserDefaultUILanguage(): 未定义的函数.),请问netegg元老可正常运行吗?
页: [1] 2
查看完整版本: [已解决]如何查询XP菜单和对话框中所用的语言