Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Abfrage ob MAPI vorhanden und eingerichtet (https://www.delphipraxis.net/177438-abfrage-ob-mapi-vorhanden-und-eingerichtet.html)

stalkingwolf 11. Nov 2013 13:30

AW: Abfrage ob MAPI vorhanden und eingerichtet
 
Hallo Harry,

ich hab einmal gerade auf meinem Testrechner und auf meinem Lokalen Rechner geschaut.

In beiden Rechnern steht in Local_Machine ein Eintrag.
Bei meinem lokalen Rechner Outlook und Thunderbird.
Beide haben einen DLLPATH Eintrag.

Auf dem Testrechner ist kein Emailclient eingerichtet, aber es steht in Local_Machine dennoch ein Eintrag. Und Zwar Hotmail mit einem DLLPath.
Dennoch erhalte ich auf diesem Rechner die Meldung, das kein Emailprogramm eingerichtet ist.

Scheint also nicht 100% zu funktionieren.

Gruß
Sven

himitsu 11. Nov 2013 14:08

AW: Abfrage ob MAPI vorhanden und eingerichtet
 
Delphi-Quellcode:
FileExist(DLLPath)
hilft auch nichts?

stalkingwolf 11. Nov 2013 14:14

AW: Abfrage ob MAPI vorhanden und eingerichtet
 
Die existiert sogar.
%ProgramFiles%\Internet Explorer\hmmapi.dll

arnof 11. Nov 2013 14:58

AW: Abfrage ob MAPI vorhanden und eingerichtet
 
Das Programm hat sich ordentlich Registriert, aber es wurde nicht eingerichtet. Das wirst Du nicht erkennen können, da jedes Programm das anders handelt.

Es wird wohl auch so sein, das dies pro Windowsbenutzer eingerichtet sein muss!!!!!!

Harry Stahl 11. Nov 2013 17:53

AW: Abfrage ob MAPI vorhanden und eingerichtet
 
Zitat:

Zitat von stalkingwolf (Beitrag 1235411)
Auf dem Testrechner ist kein Emailclient eingerichtet, aber es steht in Local_Machine dennoch ein Eintrag. Und Zwar Hotmail mit einem DLLPath.
Dennoch erhalte ich auf diesem Rechner die Meldung, das kein Emailprogramm eingerichtet ist.

Ja, Deine Konstellation ist natürlich etwas anders, als die, die ich mit meinem Programm vorfinde. Bei meiner Konstellation hat ja dann schon mal ein Anwender das vorhandene Programm (nämlich meines gestartet), der User ist also angemeldet und hat Zugriff auf ein E-Mail-Programm.

Bei Dir hat ein User per RDP Zugriff auf den Rechner. Hat dort auch ein Konto, aber für ihn ist kein E-Mail-Programm installiert. Das ist zwar da (deswegen der Eintrag in Lcal_Machine), aber nicht für ihn.

Wenn Du nur den Current-User-Eintrag bei bestehendem RDP-Zugriff auf dem Server-PC testest, ist dann dort auch ein Eintrag für ein E-Mail-Programm im Registry-Eintrag drin?

stalkingwolf 14. Nov 2013 08:52

AW: Abfrage ob MAPI vorhanden und eingerichtet
 
Nein.
Aber auf meinem Rechner, Windows 7, auch nicht. Dort steht es ebenfalls in Local_Machine.
Ich würde ja sagen Current_User->Local_Machine. Das wäre z.b auf meinem Rechner richtig, auf dem Terminalserver falsch.

Aber wie gesagt, ich hab es anders gelöst. Es würde mich zwar interessieren, aber Zeit habe ich aktuell keine mich damit zu beschäftigen.

Redeemer 18. Aug 2020 16:24

AW: Abfrage ob MAPI vorhanden und eingerichtet
 
Okay, Totengräber.

Ich stand auch gerade vor dem Problem, auch mit der DnD-Suite.

Delphi-Quellcode:
TOutlookDataFormat.Messages.Count
kann man auch prüfen, wenn MAPI nicht initialisiert ist. Daher rufe ich
Delphi-Quellcode:
OleCheck(MAPIInitialize(@MapiInit));
jetzt erst dann auf, wenn im Drop-Event das erste Mal
Delphi-Quellcode:
TOutlookDataFormat.Messages.Count > 0
ist:
Delphi-Quellcode:
  if (FOutlookDataFormatAdapter.DataFormat as TOutlookDataFormat).Messages.Count > 0 then
    begin
      // Ruft man MAPIInitialize grundsätzlich (beim Start) auf, kommt ein grafisches Meldungsfenster, wenn kein MAPI installiert ist.
      // Es wird zwar offenbar auch eine Exception geschmissen wird. Solange diese aber nicht mit leerem except-Block ignoriert sondern zu behandeln versucht wird, verursacht OleCheck anschließend einen Deadlock, ohne dass eine Fehlerbehandlung durchgeführt wird.
      if not FMapiInitizializeCalled then
      begin
        FMapiInitizializeCalled := True;
        OleCheck(MAPIInitialize(@MapiInit));
      end;

      OutlookDataFormat := FOutlookDataFormatAdapter.DataFormat as TOutlookDataFormat;

      // tue tolle Dinge


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz