Wir stehen derzeit vor dem Problem, dass eine externe Komponente (wir wissen leider nicht welche) geladen wird, wenn die Windows-Datei öffnen/speichern Dialog ein System ändert das Gebietsschema des Prozesses wahrscheinlich durch den Aufruf setlocale(LC_ALL, "")
.Ist es möglich, setlocale() innerhalb eines Prozesses zu deaktivieren?
Dies bringt unsere Anwendung durcheinander, weil sie auf dem Standard-Gebietsschema basiert, das gesetzt wird (was während der Laufzeit von keiner unserer eigenen Komponenten geändert wird).
So müssen wir sicherstellen, dass entweder setlocale()
nie einen Effekt hat, wenn innerhalb des Prozesses aufgerufen wird, oder wir müssen erkennen, wann diese Funktion aufgerufen wird und dann das Gebietsschema auf das Standard-Gebietsschema "C" zurücksetzen.
Gibt es eine Möglichkeit, eines dieser Ziele zu erreichen?
Sie einen Haltepunkt auf Bibliotheksfunktionen setzen können - siehe https://StackOverflow.com/questions/3080624/debug-break-on-win32-api-functions – sashoalm
@ashoalm Danke, aber leider können wir dieses Problem nicht debuggen, weil es auf keinem Entwicklungs-PC passiert. Selbst wenn dies der Fall wäre und wir die Komponente wüssten, würde es nicht wirklich helfen, den Prozess vor solchen Änderungen zu schützen. – floele
Versuchen Sie es mit einem Trampolin dann - https://stackoverflow.com/questions/189725/what-is-a-trampoline-function – sashoalm