You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

94 lines
1.8 KiB

  1. unit uutlPlatform;
  2. { Package: Utils
  3. Prefix: utl - UTiLs
  4. Beschreibung: diese Unit implementiert Methoden mit denen ein String generiert werden kann,
  5. welcher das System auf dem die Anwendung läuft identifiziert }
  6. {$mode objfpc}{$H+}
  7. interface
  8. uses
  9. Classes, SysUtils;
  10. function GetPlatformIdentitfier: string;
  11. implementation
  12. uses
  13. {$ifdef WINDOWS}
  14. Windows
  15. {$endif}
  16. ;
  17. {$ifdef WINDOWS}
  18. function GetWindowsVersionStr(const aDefault: String): string;
  19. var
  20. osv: TOSVERSIONINFO;
  21. ver: cardinal;
  22. begin
  23. Result:= aDefault;
  24. osv.dwOSVersionInfoSize:= SizeOf(osv);
  25. if GetVersionEx(osv) then begin
  26. ver:= MAKELONG(osv.dwMinorVersion, osv.dwMajorVersion);
  27. // positive overflow: if system is newer, always detect as newest we knew instead of failing
  28. if ver >= $00060003 then
  29. Result:= '8_1'
  30. else
  31. if ver >= $00060002 then
  32. Result:= '8'
  33. else
  34. if ver >= $00060001 then
  35. Result:= '7'
  36. else
  37. if ver >= $00060000 then
  38. Result:= 'Vista'
  39. else
  40. if ver >= $00050002 then
  41. Result:= '2003'
  42. else
  43. if ver >= $00050001 then
  44. Result:= 'XP'
  45. else
  46. if ver >= $00050000 then
  47. Result:= '2000'
  48. else
  49. if ver >= $00040000 then
  50. Result:= 'NT4';
  51. // ignore NT3, hmkay?;
  52. end;
  53. end;
  54. {$endif}
  55. function GetPlatformIdentitfier: string;
  56. var
  57. os,ver,arch: string;
  58. begin
  59. Result:= '';
  60. os:= '';
  61. ver:= 'generic';
  62. arch:= '';
  63. {$if defined(WINDOWS)}
  64. os:= 'mswin';
  65. ver:= GetWindowsVersionStr(ver);
  66. {$elseif defined(LINUX)}
  67. os:= 'linux';
  68. {$Warning System Version String missing!}
  69. {$endif}
  70. {$if defined(CPUX86)}
  71. arch:= 'x86';
  72. {$elseif defined(cpux86_64)}
  73. arch:= 'x64';
  74. {$else}
  75. {$Error Unknown Architecture!}
  76. {$endif}
  77. Result:= format('%s-%s-%s', [os, ver, arch]);
  78. end;
  79. end.