ShellExecuteExe und Mailto



  • Hallo Leute,
    Ihr seit meine letzte Hoffnung nachdem ich bei Google nich6t brauchbares gefunden habe.

    Mein Problem, ich generiere innerhalb meines Programms einen EMailtext anschliessend will ich eine leer Mail des Standard Programms öffnen und diesen Text einfügen.

    Ich habe festgestellt das bei übergabe mit &body der Text abricht sobal ich eine URL im Text habe die weitere Parameter enthält, also mit &bla= ...

    Ich habe jetzt einfach erstmal mit CreateProcess porbiert und musste feststellen das ich damit keine Mailto öffnen kann.

    Nun habe ich mir gedacht mit Shellexecute öffne ich mir die Mail und haue den Text über die Zwischenablage dann in das Mailfenster.

    Öffnen geht, auch die strg+V Anweisung geht nur bekomme ich den Text nicht ins Mailfenster.

    Ich bin dann bei ShellExecuteEx gelandet und warte mit WaitForInputIdle bis das Fenster geöffnet und im Vordergrund ist.

    Das Problem dabei ist nur WaitFor... benötigt ein Handel, das ich aber mit ShellExecuiteEx und "Mailto." nicht bekomme. Rufe ich das Notepad auf funzt es einwandfrei.

    Hier einmal mein Code:

    ...
    	SHELLEXECUTEINFO ExecInfo;
    	setmem(&ExecInfo,sizeof(ExecInfo),0);
    	HWND h;
    	ExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    	ExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
    	ExecInfo.hwnd = 0;//GetActiveWindow();
    	ExecInfo.lpVerb = "open";
    	ExecInfo.lpFile = "mailto:?subject=&body=";//"notepad.exe";
    	ExecInfo.lpParameters = NULL;
    	ExecInfo.nShow = 0;
    
    	ret = (int)ShellExecuteEx(&ExecInfo);
    
    	WaitForInputIdle(ExecInfo.hProcess, INFINITE);
    
    	//Einfügen mit Strg+V
    	keybd_event(0x11, 0, 0, 0);
    	keybd_event(0x56, 0, 0, 0);
    
    	keybd_event(0x11, 0, KEYEVENTF_KEYUP, 0);
    	keybd_event(0x56, 0, KEYEVENTF_KEYUP, 0);
    

    Ich hoffe irgendjemand hat eine Idee mit der ich mein Problem lösen kann.

    Gruß
    Fox


  • Mod

    Warum machst Du es nicht richtig und kodierst das & für den Url ein. Das müsstest Du ja auch für Zeilenschaltungen und andere Sonderzeichen machen.
    Dann würde auch ein Text in der Email, wie &bla= keinen Abbruch der Zeile bedeuten.

    Du hast hier immerhin einen Url nd keinen freien Text!



  • Hallo,
    ich habe es jetzt nach deinem Vorschlag gemacht, nut tritt das Problem auf das unter Win XP die Zeichenkette auf etwas mehr als 2000 Zeichen begrenzt ist.

    Das ist zuwenig für meinen Mailtext.

    Ich baue jetzt erstmal einen Workaround ein der bei weniger als besagte länge den Text übergibt und andernfalls einen Hinweis auf Copy & Paste aus der Zwischenablage.

    Unter Win 7 ist die Begrenzung höher, wie hoch konnte ich noch nicht feststellen.

    Wenn noch jemand eine andere Alternative hat ....

    Gruß
    Fox


  • Mod

    IMHO hat der IE eine maximale Begrenzung von 2083 Zeichen in einer URL

    http://support.microsoft.com/kb/279460/en-us


Anmelden zum Antworten