...determine if Macromedia Flash plugin is installed?

Author: Frank

Category: Multimedia

program SeekFlash;

uses
  
Forms, Windows, INIFiles, SysUtils, Dialogs, ShellApi;

{$R *.RES}

type
  
TVersionInfo = record
    
dwSignature,
    dwStrucVersion,
    dwFileVersionMS,
    dwFileVersionLS,
    dwProductVersionMS,
    dwProductVersionLS,
    dwFileFlagsMask,
    dwFileFlags,
    dwFileOS,
    dwFileType,
    dwFileSubtype,
    dwFileDateMS,
    dwFileDateLS: DWORD;
  end;


var
  
//Reg:TRegistry;
  
Ini: TIniFile;
  Text: array[1..4] of string;

  AppPath, IniFile, MySec: string;
  SetupFile, RunFile, SetupClass: string;

  VersionStr, BrowserStr: string;

  {RegSubKey,} OpenBrowser, PlugInName, UseExt: string;
  MainVersion: Word;
  // FoundOne :Boolean;

  
PVer, DPchar, POpenBrowser: PChar;
  MyPoint: Pointer;
  PLen: Cardinal;
  version: ^TVersionInfo;
  DumD: DWORD;
  LWord, HWord: Word;

  CheckHandle: Hwnd;

  //---------------------------
  //Gets the Plugin (file-) Version
  //---------------------------
procedure GetVersion(pluginName: string);
begin
  
DPChar := StrAlloc(255);
  DPchar := PChar(PluginName);

  PVer := StrAlloc(getFileVersionInfoSize(DPchar, Plen));
  getFileVersionInfo(DPChar, 0, 255, PVer);
  VerQueryValue(Pver, '\', MyPoint, Plen);

  Version := myPoint;

  dumD  := Version.dwFileVersionMS;
  hword := dumD shr 16;
  lword := dumD and 255;

  MainVersion := hword;
  VersionStr  := IntToStr(Hword) + '.' + IntToStr(LWord);

  dumD  := Version.dwFileVersionLs;
  hword := dumD shr 16;
  lword := dumD and 255;

  versionStr := versionStr + '.' + IntToStr(Hword) + '.' + IntToStr(lWord);
end;

begin
  
appPath := extractFileDir(Application.exeName);


  // runFile:= 'test.htm';
  //runFile must be a html File to determin wich browser(NC or IE) is used
  
POpenBrowser := StrAlloc(255);
  FindExecutable(PChar(extractFileName(runFile)),
    PChar(extractFileDir(runFile)), POpenBrowser);
  OpenBrowser := POpenBrowser;

  if not Fileexists(openBrowser) then
  begin
    
MessageDlg(Text[4], mtInformation, [mbOK], 0);
    halt;
  end;


  //set the FileLocations for Netscape or IE
  
if Pos('NETSCAPE.EXE', uppercase(trim(OpenBrowser))) <> 0 then
  begin 
//found Netscape
    
BrowserStr := 'Netscape Comunicator';
    PlugInName := Copy(OpenBrowser, 1, Pos('NETSCAPE.EXE',
      uppercase(trim(OpenBrowser))) - 1);
    PluginName := PlugInName + 'Plugins\NPSWF32.dll';
  end
  else
  
//found IEExplorer
  
begin
    
BrowserStr := 'Internet Explorer';

    DPChar := StrAlloc(255);
    GetSystemDirectory(DPChar, 255);
    PluginName := DPChar + '\Macromed\Flash\swflash.ocx';
    DPChar     := nil;
  end;

  GetVersion(pluginName);

  //returned Version Number, may be checked
  
while mainVersion < 4 do
  begin
    if 
messagedlg(Text[2], mtInformation, [mbYes, mbNo], 0) = 6 then
    begin
      
//installFlash;
    
end
    
// if message
    
else
      
halt;

    getVersion(pluginName);
  end// while mainVer
end.

 

printed from
www.swissdelphicenter.ch
developers knowledge base