Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Outlook starten aber nicht den Eingabedialog für emails (https://www.delphipraxis.net/53827-outlook-starten-aber-nicht-den-eingabedialog-fuer-emails.html)

Schodn 23. Sep 2005 10:44


Outlook starten aber nicht den Eingabedialog für emails
 
Outlook starten aber nicht den Eingabedialog für emails sondern nur das outlook

seh den wald vor lauter bäumen nicht mehr

Schodn 26. Sep 2005 07:31

Re: Outlook starten aber nicht den Eingabedialog für emails
 
push

marabu 26. Sep 2005 08:57

Re: Outlook starten aber nicht den Eingabedialog für emails
 
Hi Schodn,

dein Standard-E-Mail-Programm kannst du vom Prinzip her so starten:

Delphi-Quellcode:
uses
  Windows,
  SysUtils,
  ShellApi,
  Registry;

procedure StartEmail;
var
  reg: TRegistry;
  value, cmd: string;
  pac: PAnsiChar;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CLASSES_ROOT;
  if reg.OpenKeyReadOnly('\mailto\shell\open\command') then begin
    value := reg.ReadString('');
    reg.CloseKey;
  end else value := '';
  reg.Free;
  if value = '' then
    raise Exception.Create('no standard e-mail handler');
  pac := PAnsiChar(value);
  if value[1] = '"' then
    cmd := AnsiExtractQuotedStr(pac, '"')
  else if Pos(' ', value) = 0 then
    cmd := value
  else
    cmd := Copy(value, 1, Pred(Pos(' ', value)));
  ShellExecute(0, 'open', PAnsiChar(cmd), nil, nil, SW_SHOW);
end;
Grüße vom marabu

Baeuerle 26. Sep 2005 08:59

Re: Outlook starten aber nicht den Eingabedialog für emails
 
Hi,

ok hab mich verlesen sorry :-(

Schodn 26. Sep 2005 09:15

Re: Outlook starten aber nicht den Eingabedialog für emails
 
DAnke das hilft mir sehr weiter

Mit findwindow kann ich dann abfragen ob es schon mal offen ist oder? Er soll es nur aufmachen wenn es noch nicht offen ist.

Schodn 26. Sep 2005 10:31

Re: Outlook starten aber nicht den Eingabedialog für emails
 
Abfragen obs outlook offen ist. wenn nicht -> öffnen

Delphi-Quellcode:
procedure Tfrm_main.RzBmpButton23Click(Sender: TObject);
var
    reg: TRegistry;
    value, cmd: string;
    pac: PAnsiChar;
    Window : hWnd;
begin
    Window := FindWindow(nil, 'Microsoft Outlook');
    if Window = 0 then
    begin
        reg := TRegistry.Create;
        reg.RootKey := HKEY_CLASSES_ROOT;
        if reg.OpenKeyReadOnly('\mailto\shell\open\command') then begin
              value := reg.ReadString('');
              reg.CloseKey;
        end
        else
            value := '';

        reg.Free;
        {if value = '' then
          raise Exception.Create('no standard e-mail handler');}
        pac := PAnsiChar(value);
        if value[1] = '"' then
              cmd := AnsiExtractQuotedStr(pac, '"')
        else if Pos(' ', value) = 0 then
              cmd := value
        else
            cmd := Copy(value, 1, Pred(Pos(' ', value)));
        ShellExecute(0, 'open', PAnsiChar(cmd), nil, nil, SW_SHOW);
    end;
end;

marabu 28. Sep 2005 09:50

Re: Outlook starten aber nicht den Eingabedialog für emails
 
Hi Schodn,

Zitat:

Zitat von Schodn
Abfragen obs outlook offen ist. wenn nicht -> öffnen

wenn du mehrere Instanzen des Standard Mail Programms vermeiden willst, dann darfst du nicht einfach nach Outlook Ausschau halten (pun intended). Meine Routine ermittelt ja den Pfad der zugehörigen Echse. Professionell wäre jetzt eine Prüfung, ob genau dieses Reptil sich schon im Hauptspeicher bewegt - hint: CreateToolHelp32Snapshot.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 Uhr.

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