如何根据时区检测用户所在国家/地区

时间:2013-01-31 09:29:39

标签: inno-setup

我如何使用inno脚本语言根据PC的时区设置检测用户所在的国家/地区。

我只需要知道用户是来自美国还是来自美国以外。

1 个答案:

答案 0 :(得分:5)

我不会依赖时区设置,而是依赖地理位置。有关GetUserGeoID函数返回的值列表,请参阅Table of Geographical Locations

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=userdocs:Inno Setup Examples Output

[Code]
const
  GEOCLASS_NATION = 16;
  GEOID_UNITED_STATES = $F4;
type
  GEOID = Longint;
  GEOCLASS = DWORD;

function GetUserGeoID(GeoClass: GEOCLASS): GEOID;
  external 'GetUserGeoID@kernel32.dll stdcall';

function IsGeoLocationUSA: Boolean;
begin
  Result := GetUserGeoID(GEOCLASS_NATION) = GEOID_UNITED_STATES;
end;

function InitializeSetup: Boolean;
begin
  if IsGeoLocationUSA then
    MsgBox('Geographical location U.S.A.', mbInformation, MB_OK)
  else
    MsgBox('Geographical location other than U.S.A.', mbInformation, MB_OK);
end;

忘记注意,此功能支持的最低客户端操作系统是Windows XP。对于那些不知道这个设置来自何处的人来说,这里是来自Windows 7的区域和语言控制面板小程序的图片。在上面的函数中检查的地理位置可以在那里配置:

enter image description here