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 über SendKey steuern (https://www.delphipraxis.net/44579-outlook-ueber-sendkey-steuern.html)

Ulrich Wolf 21. Apr 2005 08:12


Outlook über SendKey steuern
 
Hallo,

ich habe ein Problem mit dem Verschicken von Mails. Mein Programm ist eine Art zentraler Eingangskorb das die eingehende Meldungen umsetzt und mit Outlook 2000 verschickt (Delphi7). Die Mails werden mit dem Befehl
Code:
if targetWd=FindWindowByTitle(Fenstertext) then PostKeyEx32(Ord('S'), [ssAlt], true)
versendet. Ich habe diesen Weg gewählt, um die Outlook-Sicherheitsabfrage zu umgehen.
Auf einem Windows95 Rechner funktionier es einwandfrei, wenn der Bildschirmschoner angeht. Nun möchte ich das Programm auf einem Windows 2000 Server laufen lassen. Doch jedes mal, wenn der Bildschirmschoner angeht, werden die Mails nicht mehr versandt.

Sie bleiben offen stehen. Hat jemand eine Idee?

marabu 21. Apr 2005 10:06

Re: Outlook über SendKey steuern
 
Zitat:

Zitat von Ulrich Wolf
Doch jedes mal, wenn der Bildschirmschoner angeht, werden die Mails nicht mehr versandt.

Warum schaltet dein Programm den Bildschirmschoner nicht vorher ab?
Warum versendest du deine Nachrichten aus Outlook und nicht aus deinem Programm?
Soll denn am Server immer jemand eingeloggt sein?
Warum brauchst du auf einem Server überhaupt einen Bildschirmschoner?

Ich breche mal hier ab bzw. zusammen...
Wahrscheinlich hast du sehr gute Gründe für all das, aber willst sie nicht mitteilen.

Grüße vom marabu

Ulrich Wolf 21. Apr 2005 11:33

Re: Outlook über SendKey steuern
 
Hallo marabu

der Bildschirmschoner bzw die Station ist gesperrt, damit Unbefugte keinen Zugang bekommen (Datensicherheit).
EMails aus dem Programm heraus zu verschicken ist auf dem Server gesperrt, da zum einen nachvollzogen werden kann, wer und wann Emails versendet wurden und damit keine ungewollten Emails versendet werden (dient auch zur Datensicherheit).
Am Server ist selten jemand eingeloggt. Nur wenn Admintätigkeiten vorgenommen werden.

Eigentlich will ich den Grund wissen, warum die Funktion bei gesperrtem Bildschirm nicht ausgeführt wird. Vielleicht lässt sich das Programm auch als SYSTEM starten, aber wie?

marabu 21. Apr 2005 12:24

Re: Outlook über SendKey steuern
 
Zitat:

der Bildschirmschoner bzw die Station ist gesperrt
Das ist schon ein Unterschied, ob ein Bildschirmschoner läuft oder die Station gesperrt wird. Eigentlich hat ein Bildschirmschoner nichts auf einem Server verloren.

Zitat:

EMails aus dem Programm heraus zu verschicken ist auf dem Server gesperrt, da zum einen nachvollzogen werden kann, wer und wann Emails versendet wurden
Dein "Programm" kann sich doch als Absender der E-Mails zu erkennen geben.

Zitat:

und damit keine ungewollten Emails versendet werden
Seltsam. Als ob da kein Virenschutz auf dem Server wäre...

Zitat:

Am Server ist selten jemand eingeloggt.
Also ist dein Programm ein Dienst?

Zitat:

Vielleicht lässt sich das Programm auch als SYSTEM starten, aber wie?
Bei einem Dienst kannst du den account wählen, unter dem der Dienst laufen soll.

Ich werde leider nicht so richtig schlau aus deiner Fehlerbeschreibung.
Sorry.

Ulrich Wolf 21. Apr 2005 12:36

Re: Outlook über SendKey steuern
 
Hallo marabu

wie kann ich ein Programm als Dienst starten bzw. kann das mein Problem beheben?
Zitat:

Dein "Programm" kann sich doch als Absender der E-Mails zu erkennen geben.
Was meinst du damit?

marabu 21. Apr 2005 13:06

Re: Outlook über SendKey steuern
 
Zitat:

wie kann ich ein Programm als Dienst starten
Als Übergangslösung gabe es zur WINNT-Zeit ein Programm RUNSERVICE, mit dem du Programme ohne user context in den Speicher heben konntest. Mit Delphi legst du dein Programm besser gleich als Dienst an.

Zitat:

kann das mein Problem beheben?
Ich glaube, dass ich dein "Problem" noch nicht richtig erkenne. Die Fernbedienung von Outlook über Sendkey gefällt mir nicht. Das ist für mich noch eine Nummer schlimmer als OLE Automation. Die "Sicherheitsabfrage" kannst du bestimmt über einen registry key abschalten. Wenn du sie "überlisten" kannst, ist sie nicht viel wert.

Zitat:

Zitat:

Dein "Programm" kann sich doch als Absender der E-Mails zu erkennen geben.
Was meinst du damit?
Wenn dein Programm sich als Absender in die E-Mail einträgt, dann kann man später doch erkennen wer die Nachricht verschickt hat!

marabu

Ulrich Wolf 21. Apr 2005 13:41

Re: Outlook über SendKey steuern
 
Hallo marabu

Zitat:

Mit Delphi legst du dein Programm besser gleich als Dienst an.
Wie geht das?


Zum besseren Verständnis hier mein Code.
Delphi-Quellcode:
Mailstring:='mailto:'+Empfaenger+'&body='+Mailtext;

// Für ShellExecute wird in uses ShellApi verlangt
ShellExecute(handle,
             'open',
             PChar(Mailstring),
             nil,
             nil,
             SW_SHOW);
// Mailfenster als aktuelles Fenster herholen
targetWd := FindWindowByTitle(Fenstertext);
sleep(2000); //Wartezeit bis das Fenster aufgeht.
// jetzt noch ALT + S um das Mail zu verschicken.
if targetWd=FindWindowByTitle(Fenstertext) then PostKeyEx32(Ord('S'), [ssAlt], true)
 else
  begin
   sleep(2000); //Wartezeit bis das Fenster aufgeht.
   targetWd := FindWindowByTitle(Fenstertext);
   PostKeyEx32(Ord('S'), [ssAlt], true)
  end;

marabu 21. Apr 2005 13:52

Re: Outlook über SendKey steuern
 
Schau dir mal TService bzw. TServiceApplication in der unit SvcMgr an - ab D7 definitiv an Board. Das dein Code brechen kann, wenn der Server mal zu tun hat und es nicht in 2 Sekunden schafft, ist dir klar. Das ganze muss doch mit MAPI oder SMTP zu machen sein.-- marabu

Ulrich Wolf 25. Apr 2005 14:24

Re: Outlook über SendKey steuern
 
Danke für den Tip. Werd mich mit dem Thema beschäftigen. Ist Neuland für mich.
Vielleicht meld ich mich nochmals.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 Uhr.

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