delphi MS Office Outlook 错误

标签 delphi outlook ole

我正在尝试通过 MS Office Outlook 通过在 BDS 2006 中开发的应用程序发送邮件。 它在我的 Outlook 运行时工作得很好,但如果 Outlook 关闭,它会在 try block 中失败。

它显示错误EOlesystem error:操作不可用并且不会进入Except block

我的代码

 procedure TMyform.BTN_mailClick(Sender: TObject);
 const
    olMailItem =0;
 var
    Outlook: OleVariant;
    vMailItem: variant;
 begin
  try
   Outlook := GetActiveOleObject('Outlook.Application');
  except
   Outlook := CreateOleObject('Outlook.Application');
  end;
  vMailItem := Outlook.CreateItem(olMailItem);
  vMailItem.Recipients.Add(mailaddress);
  vMailItem.Subject := 'mymail';
  vMailItem.Body := 'Dear '
  vMailItem.Attachments.Add(path);
  vMailItem.Send;
  VarClear(Outlook);
 end;

我该如何克服这个问题?

谢谢

最佳答案

它必须转到 except block 。你在那里设置断点来检查吗?

但是您仍然可以防止异常发生:

var
  Outlook: OleVariant;
  ClassID: TCLSID;
  Unknown: IUnknown;
begin
  if Succeeded(GetActiveObject(ClassID, nil, Unknown)) then
    OleCheck(Unknown.QueryInterface(IDispatch, Outlook)) else
    Outlook := CreateOleObject('Outlook.Application');
{ ... }

关于delphi MS Office Outlook 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8093381/

相关文章:

c# - 如何获取 Outlook 中刚刚删除的项目?

delphi ole excel容器,保存文件

winapi - 扩展MIDL接口(interface)和COM对象设计

Delphi - 在 VCL 样式中禁用 [x] 关闭按钮

vba - 将 PDFMaker 与 MS Outlook 结合使用

delphi - 请求如何使用 TComplexMath 类的简单示例(包含源代码)

带有附件问题的 php outlook 日历事件

c# - InvalidCastException,COM 组件上的 QueryInterface 调用失败

Delphi IDE - 命令行开关和解释

Delphi:如何显示复合组件?