Могу ли я вызвать MAPI32.DLL> MAPISendMail из 64-битного C# приложения Winforms? - PullRequest
0 голосов
/ 27 мая 2020

Я преобразовал 32-битное приложение WinForms в 64-битное, но не знаю, что делать с вызовом MAPI32.DLL> MAPISendMail? Я не думал, что вы можете вызвать 32-битную dll напрямую из 64-битной, но подумал, что посмотрю, что произойдет. Любопытно, что вроде работает, но я не знаю, безопасно ли это.

DLL вызывается следующим образом:

[DllImport("MAPI32.DLL")]
public static extern int MAPISendMail(IntPtr session, IntPtr hwnd, MapiMessage message, int flg, int rsv);

//...fill in message

// Call the API
int error = Mapi32.MAPISendMail(IntPtr.Zero, IntPtr.Zero, message, Mapi32.MAPI_DIALOG, 0);

Безопасно ли это делать с 64-битного компьютера. bit WinForms, или мне просто повезло, что оно не работает sh?

1 Ответ

1 голос
/ 27 мая 2020

Да, это безопасно. Соответствующая библиотека будет использована и загружена (mapi32.dll) из соответствующего системного каталога:

  • x64 или x86 изначально
%windir%\system32\mapi32.dll
  • x86 в WoW mode
%windir%\syswow64\mapi32.dll

Подробнее об этом можно прочитать в статье Создание приложений MAPI на 32-битных и 64-битных платформах .

...