Programmaufruf abwarten
-
Hallo,
ich bin noch ziemlich unerfahren mit VC++ 6.0.
Ich habe ein Kontaktformular erstellt, dass
Adressdaten aufnimmt und diese in dann in der Datei anfrage.txt
abspeichert.Diese Datei soll anschliessend per email
(über das Kommandozeilenprogramm blat.exe) versendet werden.
Der Aufruf erfolgt über einen Button im Dialogfenster.
Da der Versand etwas dauert, habe ich eine Fortschrittsanzeige mit eingebaut.Der Aufruf klappt, jedoch wird die Kommandozeile sofort wieder geschlossen.
Starte ich ShellExecute als letzen Eintrag in der Funktion, wird
die Email erfolgreich verschickt.
Nur dann bleibt das Dialogfenster offen.Was muss ich verändern, dass dieser Consolen-Aufruf wieder richtig funktioniert? Worin liegt das Problem?
//////////////////////////////////////////////////////////////////// // Hier wird die Email versendet. Dazu wird blat.exe benötigt. ShellExecute(NULL,"open","blat.exe","c:\\anfrage.txt -to info@test.de -subject Anfrage",NULL,SW_SHOW); //////////////////////////////////////////////////////////////////// // Fortschrittsanzeige int DAUER = 10; // Dauer in Sekunden DAUER = DAUER * 10000; CProgressWnd wndProgress(this, "Progress", TRUE); wndProgress.SetRange(0,DAUER); wndProgress.SetText("Versende Email"); for (int i = 0; i < DAUER; i++) { wndProgress.StepIt(); wndProgress.PeekAndPump(); if (wndProgress.Cancelled()) { MessageBox("Email-Versand abgebrochen"); break; } }
-
Schau bei Codeguru. Dort gibt es eine Klasse für den Emailversand.
Ist eine bessere Lösung als Deine.
-
Jetzt hab ichs...
Ich habe eine Datei beschrieben, hatte diese jedoch nicht mit File.Close() geschlossen.Danach wurde der email-Versand aufgerufen.
Jetzt funktioniert es tadellos.
Trotzdem danke.