我使用Delphi 7,在Windows 7 32位操作系統上使用Outlook 2010。Delphi Outlook 2007/2010
我的問題是我無法檢測到我的Outlook正在運行或沒有運行。 我試過下面的代碼。
uses
ComObj, ActiveX;
function IsObjectActive(ClassName: string): Boolean;
var
ClassID: TCLSID;
Unknown: IUnknown;
begin
try
ClassID := ProgIDToClassID(ClassName);
Result := GetActiveObject(ClassID, nil, Unknown) = S_OK;
except
Result := False;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if IsObjectActive('Outlook.Application') then ShowMessage('Outlook is running !');
end;
使用上面的代碼,delphi沒有檢測到Outlook正在運行。
你能告訴我有沒有什麼好的替代方法。在我的應用程序中,我使用的是Outlook Redemption,因此在Redemption中有什麼,以便我可以檢測到Outlook正在運行?
我想你正在運行德爾福(因此你的程序)或Outlook與提升的特權?當以管理員身份運行Delphi時,我可以複製該問題,而不是在正常運行時。 – MGH
如果您沒有使用不同的高度/高程水平運行......在上面的示例中,您是否僅使用_start_ Outlook?在沒有焦點切換之前,Outlook不會將自己註冊到運行對象表中(通過getActiveObject查詢)。 Delphi代碼中的 –