取得 APP 自己的版本号 (狠跨 4 个平台)
来源:互联网 发布:炫踪网络红杉 编辑:程序博客网 时间:2024/06/05 18:48
XE6 源码下载:[原创]取得APP自己的版本号(狠跨4个平台)XE6.zip
XE5 源码下载:[原创]取得APP自己的版本号(狠跨4个平台).zip
//------------------------------------------------------------------------------// by [龟山]阿卍 QQ:1467948783// http://www.cnblogs.com/onechen///------------------------------------------------------------------------------unit Main;interfaceuses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, {$IFDEF MSWINDOWS} Winapi.Windows, {$ENDIF} {$IFDEF ANDROID} Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes, FMX.Helpers.Android, {$ENDIF} {$IFDEF IOS} FMX.Platform.iOS, iOSapi.Foundation, Macapi.ObjectiveC, {$ENDIF} {$IFDEF MACOS} FMX.Platform.Mac, Macapi.Foundation, Macapi.ObjectiveC, {$ENDIF} FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts, FMX.Memo, FMX.StdCtrls;type TForm1 = class(TForm) ToolBar1: TToolBar; Label1: TLabel; Memo1: TMemo; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.fmx}{$IFDEF MSWINDOWS}procedure GetBuildInfo(var V1, V2, V3, V4: word);var VerInfoSize, VerValueSize, Dummy: DWORD; VerInfo: Pointer; VerValue: PVSFixedFileInfo;begin VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy); if VerInfoSize > 0 then begin GetMem(VerInfo, VerInfoSize); try if GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo) then begin VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize); with VerValue^ do begin V1 := dwFileVersionMS shr 16; V2 := dwFileVersionMS and $FFFF; V3 := dwFileVersionLS shr 16; V4 := dwFileVersionLS and $FFFF; end; end; finally FreeMem(VerInfo, VerInfoSize); end; end;end;function GetBuildInfoAsString: string;var V1, V2, V3, V4: word;begin GetBuildInfo(V1, V2, V3, V4); Result := IntToStr(V1) + '.' + IntToStr(V2) + '.' + IntToStr(V3) + '.' + IntToStr(V4);end;{$ENDIF}procedure TForm1.FormCreate(Sender: TObject);{$IFDEF MSWINDOWS}begin Memo1.BeginUpdate; Memo1.Lines.Add('OS : Windows'); Memo1.Lines.Add('ver : ' + GetBuildInfoAsString); Memo1.EndUpdate;end;{$ENDIF}{$IFDEF ANDROID}var PackageInfo: JPackageInfo; PackageName: JString;begin Memo1.BeginUpdate; Memo1.Lines.Add('OS : Android'); Memo1.Lines.Add('applicationLabel : ' + GetApplicationTitle); PackageName := SharedActivityContext.getPackageName; Memo1.Lines.Add('packageName : ' + JStringToString(PackageName)); PackageInfo := SharedActivityContext.getPackageManager.getPackageInfo(PackageName, 0); Memo1.Lines.Add('versionName : ' + JStringToString(PackageInfo.versionName)); Memo1.EndUpdate;end;{$ENDIF}{$IF Defined(IOS) or Defined(MACOS)}var AppNameKey: Pointer; AppBundle: NSBundle; NSAppName: NSString;begin Memo1.BeginUpdate; Memo1.Lines.Add('OS : iOS'); AppBundle := TNSBundle.Wrap(TNSBundle.OCClass.mainBundle); AppNameKey := (NSSTR('CFBundleName') as ILocalObject).GetObjectID; NSAppName := TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppNameKey)); Memo1.Lines.Add('CFBundleName : ' + UTF8ToString(NSAppName.UTF8String)); AppNameKey := (NSSTR('CFBundleDisplayName') as ILocalObject).GetObjectID; NSAppName := TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppNameKey)); Memo1.Lines.Add('CFBundleDisplayName : ' + UTF8ToString(NSAppName.UTF8String)); AppNameKey := (NSSTR('CFBundleIdentifier') as ILocalObject).GetObjectID; NSAppName := TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppNameKey)); Memo1.Lines.Add('CFBundleIdentifier : ' + UTF8ToString(NSAppName.UTF8String)); AppNameKey := (NSSTR('CFBundleVersion') as ILocalObject).GetObjectID; NSAppName := TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppNameKey)); Memo1.Lines.Add('CFBundleVersion : ' + UTF8ToString(NSAppName.UTF8String)); Memo1.EndUpdate;end;{$ENDIF}end.
0 0
- 取得 APP 自己的版本号 (狠跨 4 个平台)
- 取得应用程序的版本号 (跨4个平台)
- 获取APP的版本号
- 对自己狠点儿!
- 对自己狠一点
- swift 取得设备的系统版本号
- 自己的第一个win8 app *_*
- 记录一下自己的第一个app
- 第一个自己的app ----- TasteNews
- 关于iOS App的版本号
- iOS获取APP的版本号
- 兔子--获取app的版本号
- iOS 获取app的版本号
- iOS获取app的版本号
- 获取当前APP的版本号
- Java平台版本号的演变
- Java平台版本号的演变
- Java平台版本号的演变
- USACO Street Race 解题报告
- POCO C++库学习和分析 -- 线程 (三)
- discuz站点迁移或者更换域名后引起的云平台异常解放方法
- 设置布局问题
- 修改Memory_max_target为0出错
- 取得 APP 自己的版本号 (狠跨 4 个平台)
- WIN32字符串转换
- 内部类 外部类区别与联系
- Java中 内存区域划分
- Java中的异常处理机制的简单原理和应用。
- android应用如何启动另外一个apk应用
- OVS上创建了一个vlan
- [leetcode] Word Ladder
- python如何打印日志