Als Rückgabewert erhalte ich -1878589247, was mir leider nichts sagt. Bewirken tut die Funktion augenscheinlich auch nichts.
Keiner sonst eine Idee?
Wenn es tatsächlich keine direkte Lösung geben sollte, würde mich mich mittlerweile auch mit einem manuellen Schließen des Theme-Fensters begnügen. Leider bekomme ich das auch nicht so recht hin...
Das Problem ist, dass beim Aufrufen eines cpl-Fensters in nachfolgender Form kein passendes
Handle zurückgeliefert wird.
Hier mal aufs Nötigste heruntergebrochen:
Delphi-Quellcode:
h := ShellExecute(0, 'open', PChar('C:\Windows\system32\desk.cpl'), nil, nil, SW_SHOWNORMAL);
sleep(5000);
PostMessage(h, WM_CLOSE, 0, 0);
Wird zwar geöffnet aber nicht wieder geschlossen. Vermutlich gehört das zurückgegebene
Handle zu rundll32.exe oder einem anderen aufrufenden Prozess.
Ich könnte das
Handle nachträglich per FindWindow holen, aber dafür muss ich den Fenstertitel festlegen, der aber sprachabhängig ist und ich kann keine bestimmte Sprache vorab voraussetzen.