Hallo zusammen,
ich habe einen WebService für Apache 2.2.3, der dummerweise die
unit Forms einbindet und damit wird die Anwendung anscheinend automatisch registriert, Broadcasts für WindowsMessages anzunehmen.
Wenn jetzt keine (geeignete?) Message Loop vorhanden ist, ist es nicht mehr möglich, Einstellungen im Internet Explorer zu ändern, weil der beim Übernehmen der Änderung eine Nachricht an alle Fenster schickt (laut Spy++ könnte das WM_SETTINGSCHANGE sein), und dann so lange wartet bis die Nachricht überall abgearbeitet ist (oder der entsprechende Prozess beendet).
Bevor jemand anders die berechtigte Frage stellt, warum man Forms in einen Webservice einbindet: Altlast, die leider nicht von heute auf morgen entsorgt werden kann.
Das ich nicht drum rum komme, die ganzen Units aufzuräumen ist klar, aber wenn jemand einen Tipp hätte, wie ich das Problem bis dahin umgehen kann, bzw. was überhaupt *genau* dafür verantwortlich ist, das wär super!
Ich bin auch noch nicht dahintergekommen, ob Forms jetzt dafür verantwortlich ist, dass der Apache überhaupt benachrichtigt wird, oder ob da eher was verbogen wird, das verhindert, dass der Apache die Message richtig verarbeitet.
Um das Problem zu reproduzieren, muss man dem Delphi erstmal Apache 2.2 beibringen, dann ein einfaches Apache-Modul machen eben z.B. einen WebService und irgendwo Forms einbinden.
In Apache einbinden, Apache starten und versuchen, die Interneteinstellungen in IE zu ändern -> IE hängt. Apache beenden -> IE sollte weitermachen und Settings-Fenster solte zugehen. Forms raus, kompilieren, apache starten, interneteinstellungen ändern -> funzt wieder.
Den naheliegenden Pfusch/Workaround, in einem Modul einen Thread zu starten, der dann nur damit beschäftigt ist, alle paar (hundert) Millisekungen (Forms.)Application.ProcessMessages() aufzurufen hab ich auch schon probiert, hatte aber keinen Erfolg damit.
Noch ein Hinweis: Im Apache 1.3 macht Forms anscheinend keine Probleme.
Danke für's Lesen (und noch mehr Dank für's Antworten *g*)
Chris