home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 October / PCWorld_2000-10_cd2.bin / Borland / interbase / IBConsole_src.ZIP / ibconsole / frmuAbout.pas < prev    next >
Pascal/Delphi Source File  |  2000-07-24  |  6KB  |  206 lines

  1. {
  2.  * The contents of this file are subject to the InterBase Public License
  3.  * Version 1.0 (the "License"); you may not use this file except in
  4.  * compliance with the License.
  5.  * 
  6.  * You may obtain a copy of the License at http://www.Inprise.com/IPL.html.
  7.  * 
  8.  * Software distributed under the License is distributed on an "AS IS"
  9.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  10.  * the License for the specific language governing rights and limitations
  11.  * under the License.  The Original Code was created by Inprise
  12.  * Corporation and its predecessors.
  13.  * 
  14.  * Portions created by Inprise Corporation are Copyright (C) Inprise
  15.  * Corporation. All Rights Reserved.
  16.  * 
  17.  * Contributor(s): ______________________________________.
  18. }
  19. {****************************************************************
  20. *
  21. *  f r m u A b o u t
  22. *
  23. ****************************************************************
  24. *  Author: The Client Server Factory Inc.
  25. *  Date:   March 1, 1999
  26. *
  27. *  Description:  This unit displays the application's About box
  28. *
  29. *****************************************************************
  30. * Revisions:
  31. *
  32. *****************************************************************}
  33. unit frmuAbout;
  34.  
  35. interface
  36.  
  37. uses WinTypes, WinProcs, Classes, Forms, Controls, StdCtrls,
  38.   Buttons, ExtCtrls, Graphics, frmuDlgClass, SYSUtils, jpeg;
  39.  
  40. type
  41.   TfrmAbout = class(TDialog)
  42.     Panel1: TPanel;
  43.     Image1: TImage;
  44.     StaticText2: TStaticText;
  45.     Bevel1: TBevel;
  46.     StaticText1: TStaticText;
  47.     stxAppVersion: TStaticText;
  48.     stxCopyright: TStaticText;
  49.     stxhttpLink: TStaticText;
  50.     stxWindowsVersion: TStaticText;
  51.     Button1: TButton;
  52.     stxIBConsoleVer: TStaticText;
  53.     stxInterBase: TStaticText;
  54.     procedure btnOKClick(Sender: TObject);
  55.     procedure FormShow(Sender: TObject);
  56.     procedure stxhttpLinkClick(Sender: TObject);
  57.     procedure GetFileVersion (const Filename: String; out Major1, Major2, Minor1, Minor2: integer);
  58.     { Private declarations }
  59.   public
  60.     { Public declarations }
  61.   end;
  62.  
  63. procedure ShowAboutDialog(ProductName, ProductVersion: string);
  64.  
  65. implementation
  66.  
  67. uses zluGlobal, ShellApi; //, URLMon;
  68.  
  69. {$R *.DFM}
  70.  
  71. const
  72.   BUILDSTR = 'Build %d %s';
  73.   PLATFORM_W9x = 'Windows 9x';
  74.   PLATFORM_NT  = 'Windows NT';
  75.   MEM_IN_USE = 'Memory in use %d%%';
  76.   IBCONSOLE = 'ibconsole.exe';
  77.  
  78. {****************************************************************
  79. *
  80. *  S h o w A b o u t D i a l o g ()
  81. *
  82. ****************************************************************
  83. *  Author: The Client Server Factory Inc.
  84. *  Date:   March 1, 1999
  85. *
  86. *  Input:  ProductName - The short name of the application
  87. *          ProductVersion - The version of the application
  88. *
  89. *  Return: None
  90. *
  91. *  Description:  Displays the application About dialog
  92. *
  93. *****************************************************************
  94. * Revisions:
  95. *
  96. *****************************************************************}
  97. procedure ShowAboutDialog(ProductName, ProductVersion: string);
  98. var
  99.   frmAbout: TfrmAbout;
  100. begin
  101.   frmAbout := TfrmAbout.Create(Application);
  102.   with frmAbout do
  103.   begin
  104.     // show name and version
  105.     if (ProductName <> '') and (ProductVersion <> '') then
  106.     begin
  107.       Caption := Caption + ' ' + ProductName;
  108.     end;
  109.     ShowModal;
  110.     Free;
  111.   end;
  112. end;
  113.  
  114. procedure TfrmAbout.btnOKClick(Sender: TObject);
  115. begin
  116.   Close;
  117. end;
  118.  
  119. procedure TfrmAbout.FormShow(Sender: TObject);
  120. var
  121.   VersionInfo : TOsVersionInfo;
  122.   Build: String;
  123.   V1, V2, V3, V4: Integer;
  124.   tmpBuffer,
  125.   Path: string;
  126. begin
  127.   inherited;
  128.   { Get OS Version Information }
  129.   VersionInfo.dwOSVersionInfoSize := SizeOf(VersionInfo);
  130.   GetVersionEx(VersionInfo);
  131.  
  132.   with VersionInfo do
  133.   begin
  134.     if dwPlatformID = VER_PLATFORM_WIN32_NT then
  135.     begin
  136.       build := Format (BUILDSTR, [LoWord(dwBuildNumber), szCSDVersion]);
  137.       stxWindowsVersion.Caption := Format('%s %d.%d (%s)', [PLATFORM_NT, dwMajorVersion, dwMinorVersion, Build]);
  138.     end
  139.     else
  140.       stxWindowsVersion.Caption := Format('%s', [PLATFORM_W9X]);
  141.   end;
  142.  
  143.   { Get the version information for IBConsole }
  144.   Path := Application.ExeName;
  145.   GetFileVersion(Path, V1, V2, V3, V4);
  146.   stxIBConsoleVer.Caption := Format('Version: %d.%d.%d.%d', [V1, V2, V3, V4]);
  147.  
  148.   { Get file version information for GDS32.DLL and IBSERVER.EXE }
  149.   // Get the gds32.dll path
  150.   SetLength(tmpBuffer, MAX_PATH);
  151.   GetSystemDirectory(PChar(tmpBuffer), MAX_PATH);
  152.   Path := tmpBuffer + '\gds32.dll';
  153.  
  154.   // Check to see if it exists
  155.   if FileExists(Path) then
  156.   begin
  157.     GetFileVersion(Path, V1, V2, V3, V4);
  158. //    stxIBVer.Caption := Format('Version: %d.%d.%d.%d', [V1, V2, V3, V4]);
  159.   end;
  160. end;
  161.  
  162. procedure TfrmAbout.GetFileVersion(const Filename: String; out Major1,
  163.   Major2, Minor1, Minor2: integer);
  164.   { Helper function to get the actual file version information }
  165. var
  166.   Info: Pointer;
  167.   InfoSize: DWORD;
  168.   FileInfo: PVSFixedFileInfo;
  169.   FileInfoSize: DWORD;
  170.   Tmp: DWORD;
  171. begin
  172.   // Get the size of the FileVersionInformatioin
  173.   InfoSize := GetFileVersionInfoSize(PChar(FileName), Tmp);
  174.   // If InfoSize = 0, then the file may not exist, or
  175.   // it may not have file version information in it.
  176.   if InfoSize = 0 then
  177.     raise Exception.Create('Can''t get file version information for '
  178.       + FileName);
  179.   // Allocate memory for the file version information
  180.   GetMem(Info, InfoSize);
  181.   try
  182.     // Get the information
  183.     GetFileVersionInfo(PChar(FileName), 0, InfoSize, Info);
  184.     // Query the information for the version
  185.     VerQueryValue(Info, '\', Pointer(FileInfo), FileInfoSize);
  186.     // Now fill in the version information
  187.     Major1 := FileInfo.dwFileVersionMS shr 16;
  188.     Major2 := FileInfo.dwFileVersionMS and $FFFF;
  189.     Minor1 := FileInfo.dwFileVersionLS shr 16;
  190.     Minor2 := FileInfo.dwFileVersionLS and $FFFF;
  191.   finally
  192.     FreeMem(Info, FileInfoSize);
  193.   end;
  194. end;
  195.  
  196. procedure TfrmAbout.stxhttpLinkClick(Sender: TObject);
  197. begin
  198.   inherited;
  199.   ShellExecute (0, 'open', PChar((Sender as TStaticText).Caption), '', '', SW_SHOWNORMAL);
  200. end;
  201.  
  202. end.
  203.  
  204.  
  205.  
  206.