如何以编程方式检索区域和语言设置中显示的“位置”?
替代文字http://img.zgserver.com/windows/location.png
将WParaM传入DragQueryFile不兼容?
使用Windows API以编程方式确定主监视器上的VGA或DVI?
在没有FILE_SHARE_DELETE的情况下重命名在另一个进程中打开的文件
监视内核registry更改
在Win8应用程序中获取唯一的设备ID
以下是您从前面提到的注册表项中检索到的GeoID列表:(它们是十六进制的)
http://msdn.microsoft.com/en-us/library/dd374073%28VS.85%29.aspx
条目:
HKEY_CURRENT_USERControl PanelInternationalGeo
GEOID locationId = GetUserGeoID(GEOCLASS_NATION);
请参阅http://msdn.microsoft.com/en-us/library/dd318138(v=VS.85).aspx
HKEY_CURRENT_USER Control Panel International Geo
我不知道,如何将数字转换为国家的名称:(
也许有用的代码 (C#)
private const int GEOCLASS_NATION = 16; //SYSGEOTYPE private const int GEO_NATION = 1; private const int GEO_LATITUDE = 2; private const int GEO_LONGITUDE = 3; private const int GEO_ISO2 = 4; private const int GEO_ISO3 = 5; private const int GEO_RFC1766 = 6; private const int GEO_LCID = 7; private const int GEO_FRIENDLYNAME = 8; private const int GEO_OFFICIALNAME = 9; private const int GEO_TIMEZOnes = 10; private const int GEO_OFFICIALLANGUAGES = 11; #region Win32 Declarations // [DllImport("kernel32.dll",ExactSpelling = true,CallingConvention = CallingConvention.StdCall,SetLastError = true)] // private static extern int GetUserGeoID(GeoClass geoClass); [DllImport("kernel32.dll")] static extern int GetUserGeoID(int geoId); [DllImport("kernel32.dll")] private static extern int GetUserDefaultLCID(); [DllImport("kernel32.dll")] private static extern int GetGeoInfo(int geoid,int geoType,StringBuilder lpGeoData,int cchData,int langid); #endregion private string GetGeoFriendlyName(int geoId) { int lcid = GetUserDefaultLCID(); StringBuilder bldr = new StringBuilder(50); GetGeoInfo(geoId,GEO_FRIENDLYNAME,bldr,bldr.Capacity,lcid); return bldr.ToString(); } private string GetGeoIso2(int geoId) { int lcid = GetUserDefaultLCID(); StringBuilder bldr = new StringBuilder(50); GetGeoInfo(geoId,GEO_ISO2,lcid); return bldr.ToString(); } // HKEY_CURRENT_USERControl PanelInternationalGeo" using (var regKeyGeo = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Control PanelInternationalGeo")) { var NationValue = Convert.ToInt32(regKeyGeo.GetValue("Nation").ToString()); int geoId = GetUserGeoID(GEOCLASS_NATION); string friendlyName = GetGeoFriendlyName(geoId); Response.Write("GetUserGeoID: " + geoId + " - friendlyName: " + friendlyName + @". HKEY_CURRENT_USERControl PanelInternationalGeo - Nation: " + NationValue + " - " + GetGeoFriendlyName(NationValue)); var iso2 = GetGeoIso2(geoId); Response.Write(" - GetGeoIso2: " + iso2); var regionGeo = new regioninfo(iso2); Response.Write(" - " + regionGeo.displayName + " - " + regionGeo.ISOCurrencySymbol); var cultureInfo = CultureInfo.GetCultures(CultureTypes.AllCultures).Where(c => c.Name.EndsWith(iso2)); var culture = cultureInfo.ToList()[0]; Response.Write("<br /> Culture for " + iso2 + ": " + culture.displayName + " - " + culture.DateTimeFormat.FullDateTimePattern); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。