1

Ruby を使用して、コントロール パネル: 地域と言語: 場所:現在地の設定にアクセスしようとしています。私は国コードにのみ興味があります。

私が得た最も近いものは、システムロケールの国コードですが、それは私が求めていたものではありません.

`systeminfo | findstr /B /C:"System Locale"`.to_s.upcase.strip[30..31]

そこにいる誰かが知っていることを願っています。ありがとう。

4

1 に答える 1

4

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"

ドキュメントGetUserGeoID: http:
//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

于 2012-05-16T17:17:20.997 に答える