Autor Beitrag
Masthe
Hält's aus hier
Beiträge: 13


Delphi & Projektmanagement
BeitragVerfasst: Di 04.05.10 09:32 
Good Morning @ all!

Problematik:
Ein System besteht aus mehreren voneinander unabhängigen Delphi-Programmen.
Systemsprache und Formatseinstellungen sind fast alle auf Deutsch.
Einziger Unterscheid: Standardtrennzeichen für das Datumsformat ist "/" anstatt "."
Wird der Skript für die Gruppenrichtlinien aktualisiert, muss kurzzeitig dieses "/" auf "." gesetzt werden.
Hierbei aktualisiert sich das leider auch in allen Programmen zu einem ".", jedoch nicht wieder, wie im Skript gewollt, zurück auf "/".
Simuliert werden kann das, indem bei "Regionale Einstellungen" ein "." eingestellt wird.

Bisher könnte jedes Programm sich selbst "heilen" indem es folgenden in einem Timer folgenden Code Sekündlich ausführt (maximale Fehlermöglichkeit besteht innerhalb 1 sec)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
    // set the dateseperator in the System
    SetLocaleInfo( GetSystemDefaultLCID, LOCALE_SDATE, '/');
    // set the shortdateformat in the system
    SetLocaleInfo( GetSystemDefaultLCID, LOCALE_SSHORTDATE, 'dd/mm/yy');
    // refresh all the formatsettings
    GetFormatSettings;


Um das ganze zu Optimieren möchte ich nun als eine Art Dienst im Hintergrund das ganze machen können.

Lösungswunsch:
Ändere ich selbst in "Regionale Einstellungen" das Datumsformat erst auf "." und hiernach manuell wieder auf "/", dann ändert sich (ohne Aufruf der oben genannten Methoden) das Datumsformat wieder automatisch in allen Programmen.
Genau diese aktualisierung würde ich gerne nutzen und ich denke, dass es per WindowsAPI möglich sein könnte. Bisher habe ich jedoch kein Erfolg bei der Suche gehabt.
Ich hoffe jemand stand schonmal vor dem gleichen Problem und kann mir die Methode oder ggf. eine Page nennen, auf der das Datumsproblem bereits vorgekommen ist.

Auch für weitere Vorschläge, wie man hier vorgehen könnte (ohne Alle Programme zu modifizieren) bin ich sehr Dankbar!

Greetings
Masthe
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 04.05.10 09:56 
Moin!

Schonmal mit WM_SETTINGCHANGE gespielt? :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Masthe Threadstarter
Hält's aus hier
Beiträge: 13


Delphi & Projektmanagement
BeitragVerfasst: Di 04.05.10 11:57 
Hi :)

hey Narses!

VIIIIIIELEN DAAAANK!
Das hat dann letztendlich geklappt:

ausblenden Delphi-Quelltext
1:
2:
3:
  // broadcast all
  //SendMessage( HWND_BROADCAST, WM_SETTINGCHANGE, 0, LongInt(PChar('Windows')));
  SendMessage( HWND_BROADCAST, $1A0, LongInt(PChar('Windows')));


ich hab das ganze jetzt als Thread implementiert und in die Hauptanwendung in ein Timer gepackt.
Problem war dann, dass Delphi WM_SETTINGCHANGE nicht mehr kannte, aber dank MSDN wusste ich dass es 1A ist :-D

Jetzt gehts weiter mit anderen Projekten ^^

greetings
Masthe