如何快速判断系统中已经安装Excel?(100分)

  • 主题发起人 主题发起人 LuJuhe
  • 开始时间 开始时间
L

LuJuhe

Unregistered / Unconfirmed
GUEST, unregistred user!
需要在程序中调用Excel,现在需要一个判断Excel是否安装的算法,我开始这么用:
try
try
v := CreateOLEOblect('Excel.Application');
ExcelInstalled := True;
except
ExcelInstalled := False;
end;
finally
if not varisnull(v) then
v.Quit;
v := unassigned;
end;

但是,这会先启动Excel,结果很慢,我想要一种快速的办法,不事先试图打开它,怎么做?
 
不知读注册表是否可以?
 
可靠吗?
 
读注册表的 Office 内的Excel 相关信息,这是很可靠的方法,当然要读多几个键值。
 
不先执行,那只有查看注册表。

但上面的方法比较可靠,可以确保 excel 可运行。
 
excel是一个可控制的com对象,在注册表中有他的classid在
hkey_classes_root - excel.application下找到后通过
CreateComObject函数判断是否能创建成功,成功表名存在excel
(另在之前先判断是否存在活动的excel.exe)
uses activex,comobj;
{$R *.dfm}
var
s:tguid;
o : IUnknown;
procedure TForm1.Button1Click(Sender: TObject);
begin
s := StringToGUID('{00024500-0000-0000-C000-000000000046}') ;
if not Succeeded(GetActiveObject(s, nil, o)) then
o := CreateComObject(s);
end;
 
多人接受答案了。
 
后退
顶部