我正在尝试使用 Ruby访问控制面板:区域和语言:位置:当前位置设置。我只对国家代码感兴趣。
我得到的最接近的是系统语言环境中的国家代码,但这并不是我所追求的。
`systeminfo | findstr /B /C:"System Locale"`.to_s.upcase.strip[30..31]
我希望那里的人可能知道。谢谢。
我正在尝试使用 Ruby访问控制面板:区域和语言:位置:当前位置设置。我只对国家代码感兴趣。
我得到的最接近的是系统语言环境中的国家代码,但这并不是我所追求的。
`systeminfo | findstr /B /C:"System Locale"`.to_s.upcase.strip[30..31]
我希望那里的人可能知道。谢谢。
使用 Win32 API:
require 'Win32API'
# Set up some Win32 constants
GEOCLASS_NATION = 16
GEO_ISO2 = 4
GEO_FRIENDLYNAME = 8
# Set up some API calls
GetUserGeoID = Win32API.new('kernel32', 'GetUserGeoID', ['L'], 'L')
GetGeoInfo = Win32API.new('kernel32', 'GetGeoInfoA', ['L', 'L', 'P', 'L', 'L'], 'L')
# Get user's GEOID
geoid = GetUserGeoID.call(GEOCLASS_NATION)
=> 77
# Get ISO name
buffer = " " * 100
GetGeoInfo.call(geoid, GEO_ISO2, buffer, buffer.length, 0)
geo_iso = buffer.strip
=> "FI"
# Get friendly name
buffer = " " * 100
GetGeoInfo.call(geoid, GEO_FRIENDLYNAME, buffer, buffer.length, 0)
geo_name = buffer.strip
=> "Finland"
文档:http GetUserGeoID
:
//msdn.microsoft.com/en-us/library/dd318138.aspx
文档GetGeoInfo
:
https ://docs.microsoft.com/en-us/windows/desktop/api/winnls/nf-winnls-getgeoinfoa
要将 GEOID 转换为位置名称,您还可以使用此表:http:
//msdn.microsoft.com/en-us/library/dd374073.aspx