Delphi Outlook 2007/2010 - PullRequest
       31

Delphi Outlook 2007/2010

3 голосов
/ 09 ноября 2011

Я использую Delphi 7 с Outlook 2010 на 32-битной ОС Windows 7.

Моя проблема в том, что я не могу определить, запущен мой прогноз или нет.Я попробовал следующий код.

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 запущен?

Ответы [ 2 ]

2 голосов
/ 09 ноября 2011

Вы можете проверить, запущен ли процесс outlook.exe.

0 голосов
/ 09 ноября 2011

Надеюсь, что это поможет.

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.
...