Schließen des Designers durch Programm

Hallo Combit,

wir verwenden bisher L&L 27 und wollen nun auf L&L30 SP3 umstellen. Das hat bis auf eine Unschönheit auch gut funktioniert. Wir öffnen den Designer mehrfach innerhalb unserer Unittests und schließen ihn jeweils in einen separaten Thread.

Wir suchen und schließen das Fenster mit

hwndWindow = FindWindowEx(nullptr, nullptr, nullptr, sSuchString[i].c_str());
PostMessage(hwndWindow, WM_SYSCOMMAND, SC_CLOSE, 0);

Da ist natürlich noch einiger Code drumherum. Der Suchstring ist dann der erwartete Fenstertitel. Das funktioniert mit L&L30 nicht mehr so zuverlässig wie in der Version 27. Es bleiben immer wieder Designer Fenster stehen, aber auch nicht alle.

Ich habe ein kleines C++ Programm geschrieben, welches mir mit EnumWindows alle Fenstertitel ausgibt. Dabei bekomme ich auf der Konsole eine merkwürdige Ausgabe.

Designerá-áC:\Program Files (x86)\combit\LL30\Beispielanwendung\Artikelliste mit Bildern.lst

Ich frage mich woher das á kommt. Im Designerfenster selbst sehe ich an der Stelle nur ein Leerzeichen. Gibt es eine zuverlässigere Methode als FindWindowEx und PostMessage, um den Designer aus dem Test heraus zu schließen?

Wir setzen das Zeichen unter Umständen und ersetzen es “normalerweise” durch Leerzeichen. Das scheint in deiner Testumgebung nicht korrekt zu klappen. Könntet ihr während der Tests vielleicht über

LlDesignerSetOptionString(hJob, LL_DESIGNEROPTSTR_WORKSPACETITLE, L"FesterTitelDerSichDannAuchNichtAendert");

einfach einen Alternativtext in die Caption schreiben? Dann wäre das Problem vermutlich am elegantesten gelöst.