:: MVP ::
|
|
:: RSS ::
|
|
|
Как опpеделить, установлен ли какой либо компонент MS Office?
// Способ первый
uses
{...,} ActiveX;
function CheckInstall( Obj: WideString ): boolean;
var
ClassID: TCLSID;
Rez: HRESULT;
begin
// Ищем CLSID OLE-объекта
Rez := CLSIDFromProgID( PWideChar( Obj ), ClassID );
Result := Rez = S_OK;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if CheckInstall( 'Excel.Application' ) then
ShowMessage( 'Excel установлен' );
if CheckInstall( 'Word.Application' ) then
ShowMessage( 'Word установлен' );
if CheckInstall( 'Access.Application' ) then
ShowMessage( 'Access установлен' );
end;
// Способ второй
uses
{...,} Registry;
function CheckInstall( Obj: WideString ): boolean;
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CLASSES_ROOT;
Result := Reg.KeyExists( Obj );
finally
Reg.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if CheckInstall( 'Word.Application' ) then
ShowMessage( 'Word установлен' );
end;
|
Как опpеделить, запущен ли какой либо компонент MS Office?
uses
{...,} ComObj;
function CheckRun( Obj: WideString ): boolean;
begin
try
GetActiveOleObject( Obj );
Result := true;
except
Result := false;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if CheckRun( 'Word.Application' ) then
ShowMessage( 'Word запущен' );
end;
|
Как опpеделить версию MS Office?
uses
{...,} ComObj, RegularExpressions;
var
E: OleVariant;
procedure TForm1.Button1Click(Sender: TObject);
begin
try
E := CreateOleObject('Excel.Application'); // 'Word.Application'
try
case StrToInt(TRegEx.Match(E.Version, '^(\d+)').Value) of
9: ShowMessage('Microsoft Office 2000');
10: ShowMessage('Microsoft Office XP');
11: ShowMessage('Microsoft Office 2003');
12: ShowMessage('Microsoft Office 2007');
14: ShowMessage('Microsoft Office 2010');
15: ShowMessage('Microsoft Office 2013');
16: ShowMessage('Microsoft Office 2016');
else
ShowMessage('Не удалось определить версию Office');
end;
except
on E: Exception do
ShowMessage('Не удалось определить версию Office: ' + E.Message);
end;
finally
E.Quit;
E := Unassigned;
end;
end;
|
При использовании материала - ссылка на сайт обязательна
|
|