Delphi android windows IOS通用获取程序版本

2022-11-17 16:24:29 作者:admin

本文整理自网络,侵删。

 {$IFDEF MSWINDOWS}
uses Winapi.Windows, ShlObj, FMX.PlatForm.Win, ShellAPI;{$ENDIF}{$IFDEF ANDROID}
uses Androidapi.JNI.JavaTypes, Androidapi.Helpers,  Androidapi.JNI.GraphicsContentViewText;{$ENDIF}
//上面引用仅供参考
{$IFDEF ANDROID}
function GetAppVersion: String;var  PackageManager: JPackageManager;  PackageInfo: JPackageInfo;begin  PackageManager := TAndroidHelper.Context.getPackageManager;  PackageInfo := PackageManager.getPackageInfo    (TAndroidHelper.Activity.getPackageName, 0);  Result := JStringToString(PackageInfo.versionName);end;{$ENDIF}// {$IFDEF MACOS}// begin// Result := '';// end;// {$ENDIF}
{$IFDEF IOS}
function GetAppVersion: String;begin  Result := string(TNSString.Wrap(CFBundleGetValueForInfoDictionaryKey    (CFBundleGetMainBundle, kCFBundleVersionKey)).UTF8String);end;{$ENDIF}{$IFDEF MSWINDOWS}
function GetAppVersion: String;const  Fmt = '%d.%d.%d.%d';
var  sFileName: String;  iBufferSize: DWORD;  iDummy: DWORD;  pBuffer: Pointer;  pFileInfo: Pointer;  iVer: array [1 .. 4] of Word;begin  // set default value  Result := '';
  // prepare buffer for path and terminating #0  SetLength(sFileName, MAX_PATH + 1);  SetLength(sFileName, GetModuleFileName(hInstance, PChar(sFileName),    MAX_PATH + 1));
  // get size of version info (0 if no version info exists)  iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);  if (iBufferSize > 0) then  begin    GetMem(pBuffer, iBufferSize);    try      // get fixed file info (language independent)      GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);      VerQueryValue(pBuffer, '\', pFileInfo, iDummy);      // read version blocks      iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);      iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);      iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);      iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);    finally      FreeMem(pBuffer);    end;    // format result string    Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]);  end;end;{$ENDIF}

相关阅读 >>

Delphi 提升进程权限

Delphi xe httpencode

Delphi 如何删除动态数组的指定元素

Delphi下程序内存泄露报告

Delphi 用stringhelper.split分解字符串

Delphi 字符串的分割

Delphi 扫二维码并识别

Delphi 用idhttp获取utf-8编码的网页

Delphi xe增强的rtti妙用--动态创建包中的窗口类

Delphi程序的exe和dll文件添加版本信息

更多相关阅读请进入《Delphi》频道 >>



在线咨询 拨打电话