我如何确保MAPI客户端在启动时获得焦点?

时间:2010-11-30 21:08:45

标签: delphi winapi mapi

我有一个通过MAPI启动用户默认电子邮件程序的功能。邮件程序通常在我的应用程序之上启动,但有时却没有;有时我的应用程序仍然在桌面显示器上。有没有办法确保用户的电子邮件程序将在桌面上启动,而不是隐藏在其他打开的应用程序后面?

2 个答案:

答案 0 :(得分:-1)

你需要使用findwindow api找到你想要在顶部的窗口,然后调用setforegroundwindow api

答案 1 :(得分:-1)

我认为使用SW_SHOWNORMAL或SW_SHOW标志的ShellExecute是您可以做的最佳解决方案。结合mailto:参数,它将是这样的:

ShellExecute(Self.Handle, nil, '"mailto:somebody@example.com?subject=This is ' +
  'the subject&body=The message''s first paragraph.%0ASecond paragraph.%0AThird ' +
  'Paragraph."', nil, nil, SW_SHOWNORMAL);

当然,这种方法只能用于创建简单的消息。