我剛剛添加了這個函數,它決定了要使用哪個mailmerge方法。它似乎可以在XP和Windows 2000上運行。有什麼理由不能在NT,Vista,7和其他Windows版本上運行?我想在註冊表中會有問題嗎?Delphi通過註冊表檢測Word版本
function GetMSOfficeVersion: String;
var Reg: TRegistry;
begin
Result := 'Office Version Not Found';
// create the registry object
Reg := TRegistry.Create;
try
// set the root key
Reg.RootKey := HKEY_LOCAL_MACHINE;
// check for Office97
if Reg.OpenKey('\SOFTWARE\Microsoft\Office\8.0', False) then
begin
Result := 'Microsoft Office97';
end;
// check for Office2000
if Reg.OpenKey('\SOFTWARE\Microsoft\Office\9.0', False) then
begin
Result := 'Microsoft Office2000';
end;
// check for OfficeXP -- not sure if this is correct
// you have to verify the key on a machine with OfficeXP
if Reg.OpenKey('\SOFTWARE\Microsoft\Office\10.0', False) then
begin
Result := 'Microsoft OfficeXP(regkey10)';
end;
// check for 11.0
if Reg.OpenKey('\SOFTWARE\Microsoft\Office\11.0', False) then
begin
Result := 'Microsoft OfficeXP(regkey11)';
end;
// check for 12
if Reg.OpenKey('\SOFTWARE\Microsoft\Office\12.0', False) then
begin
Result := 'Microsoft Office2010';
end;
finally
// make sure we free the object we created
Reg.Free;
end;
end;
嘗試在Vista/Win7上以管理員身份運行您的應用程序。 – Jeff
另外 - 即使它可能不是必需的,你可以在Result:= ...後添加'Exit;',它會跳到最後,而不執行所有其他檢查。 :) – Jeff
你得到的錯誤信息是什麼?這是一個安全/用戶相關的錯誤?此外,Office \ 14.0是Office2010我認爲Office \ 12.0是2007. –