簡體   English   中英

Delphi Outlook 2007/2010

[英]Delphi Outlook 2007/2010

我在Windows 7 32位操作系統上使用Delphi 7和Outlook 2010。

我的問題是我無法檢測到我的前景是否正在運行。 我嘗試了以下代碼。

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.exe進程是否正在運行。

我希望這有幫助。

library IsCra;

uses
  SysUtils,
  Classes,
  Windows,
  TlHelp32;

{$R *.res}

function AppIsRunning(AApp: String): Boolean; stdcall;
var
  h: THandle;
  p: TProcessEntry32;
begin
  Result := False;

  p.dwSize := SizeOf(p);
  h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0);
  try
    Process32First(h, p);
    repeat
      Result := AnsiUpperCase(AApp) = AnsiUpperCase(p.szExeFile);
    until Result or (not Process32Next(h, p));
  finally
    CloseHandle(h);
  end;
end;

exports
  AppIsRunning;

begin
end.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM