CreateProcess und mailto:
-
Hi ihrs!
Ich habe ein kleines Problem mit CreateProcess. Ich möchte gerne das Standard-Mail-Programm des Systems starten und diesem Daten übergeben und solange warten, bis das Programm beendet ist (Also Outlook/Thunderbird/oä. beendet wurde.)
Hier mein Code.
platform::execute ("mailto:mame@provider.com?subject=Testmail", true); // [...] bool platform::execute (const std::string& file, bool wait) { if (file.empty ()) return (false); #if defined (_WIN32) ::STARTUPINFO si = { sizeof(si) }; ::PROCESS_INFORMATION pi; if (!::CreateProcess (0, const_cast<::LPSTR>(file.c_str ()), 0, 0, false, 0, nullptr, 0, &si, &pi)) return (false); if (wait) ::WaitForSingleObject (pi.hProcess, INFINITE); ::CloseHandle (pi.hProcess); ::CloseHandle (pi.hThread); #else if defined (__linux__) // [...] #endif }Leider schlägt CreateProcess fehl

Jemand eine Idee was ich machen kann ohne ShellExecute zu benutzen?
-
Geht nur mit ShellExecuteEx. (Ex um auf das Beenden des Programms warten zu können)
-
Schade, äußerst Schade, aber da muss ich dann wohl durch.
-
C++'ler schrieb:
Schade, äußerst Schade, aber da muss ich dann wohl durch.
Warum schade? IMHO ist ShellExecute(Ex) sowieso die bessere Wahl. ShellExecute behandelt wenigstens alle Programme so wie es auch der Explorer bzw. die Eingabeaufforderung macht.
Vor allem kann man eben auch Datendateien mit dem zugehörigen Programm öffnen oder andere Protokolle korrekt ausführen (siehe mailto...)