AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Dialog "Zeitzone ändern" nachbauen
Thema durchsuchen
Ansicht
Themen-Optionen

Dialog "Zeitzone ändern" nachbauen

Ein Thema von TUX_der_Pinguin · begonnen am 9. Jul 2015 · letzter Beitrag vom 13. Jul 2015
Antwort Antwort
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 9. Jul 2015, 15:10
Moin,

such mal nach
"GetTimeZoneInformation" und "SetTimeZoneInformation" . . . da sollte sich noch was finden lassen.
Naja nicht so wirklich den GetTimeZoneInformation liefert, wie ich eingangs geschrieben habe, nur eine unspezifische Antwort ( "Mitteleuropäische Zeit" ). In der Liste stehen aber detaillierte Informationen wie z.b. "(UTC+01:00) Amsterdam, Berlin, Bern, Rom, Stockholm, Wien". Wie sollte ich also mit GetTimeZoneInformation() entscheiden ob "UTC+1 Amsterdam, Berlin" oder "UTC+1 Sarajevo, Skopje" eingestellt ist. Klar die Zeitzone ist schon die gleiche aber ich will ja die Auswahl anbieten die auch der Standard Windows Dialog bietet.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 9. Jul 2015, 15:36
Die erweiterten Informationen stehen in der Registry: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones

Die Frage ist jetzt, ob es dafür eine API Funktion gibt oder ob man die selbst zuordnen und auslesen muss.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 9. Jul 2015, 15:45
Die erweiterten Informationen stehen in der Registry: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones

Die Frage ist jetzt, ob es dafür eine API Funktion gibt oder ob man die selbst zuordnen und auslesen muss.
Genau daher kommen die Informationen zum erstellen einer Liste aller im System verfügbaren Zeitzonen, wie sie auch im Standard Windows Dialog aufgelistet werden.

Die Frage ist eher steht da auch irgendwo welche Zeitzone zur Zeit aktuell eingestellt ist und lässt sich das dort ändern und wenn ja wie? Ich denke einfach etwas in der Registry ändern heißt ja nicht unbedingt das das System die Änderung auch mitbekommt und sofort anwendet. Fragen über Fragen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 9. Jul 2015, 15:49
Was willst du den jetzt machen? Ich dachte dir geht es darum die erweiterten Informationen anzuzeigen? Das diese Information nur zum Lesen und Anzeigen da sind sollte wohl klar sein. Ändern der Zeitzone geht mit SetTimeZone....irgendwas.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 9. Jul 2015, 16:10
Was für ein Zufall, da bin ich momentan auch grade dran: Auf einer Kiosk-Anwendung soll der Inbetriebnehmer jetzt auch die lokale Zeitzone einstellen können.

Die im System vorhandenen Zeitzonen findet man anscheinend wirklich nur, wie schon genannt, in der Registry. Dort musst du den Binarblob auslesen und kannst dir anhand der zwei weiteren Schlüssel dort wieder die Zeitzone zusammenbasteln.

Wenn man auf die .NET-Gegenseite guckt, kann man echt wieder neidisch werden, da ist alles schon fertig. TimeZoneInfo.GetSystemTimeZones() und gut ist (sogar schon sortiert).

Wenn du noch einen Tag wartest, habe ich das fertig. Wenn du nur wissen willst was deine aktuelle Zeitzone ist, das steht auch schon unter System.DateUtils.TTimeZone.Local .

Die lokale Zeitzone zu ändern ist etwas kniffeliger, da musste man, meine ich, noch vorher wieder an diesen komischen Prozess-Privilegien drehen. Bis morgen kann ich das mal alles zusammenstellen.
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#6

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 9. Jul 2015, 16:24
Die lokale Zeitzone zu ändern ist etwas kniffeliger, da musste man, meine ich, noch vorher wieder an diesen komischen Prozess-Privilegien drehen. Bis morgen kann ich das mal alles zusammenstellen.
SetTimeZoneInformation()

Zitat:
Remarks
An application must have the SE_TIME_ZONE_NAME privilege for this function to succeed. This privilege is disabled by default. Use the AdjustTokenPrivileges function to enable the privilege before calling SetTimeZoneInformation, and then to disable the privilege after the SetTimeZoneInformation call. For more information, see Running with Special Privileges.

Windows Server 2003 and Windows XP/2000: The application must have the SE_SYSTEMTIME_NAME privilege.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 9. Jul 2015, 18:46
Für die Inbetriebnahme des Systems, kann man natürlich auch einen extra Benutzer anlegen mit exakt den Rechten, die der benötigt.

Dann kann der in den "normalen" Dialogen herumwurschteln und das System einstellen.

Der Kiosk-Benutzer braucht das nicht zu können.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 10. Jul 2015, 07:24
Wenn du noch einen Tag wartest, habe ich das fertig. Wenn du nur wissen willst was deine aktuelle Zeitzone ist, das steht auch schon unter System.DateUtils.TTimeZone.Local .
Ich nutze noch Delphi 2009 da gibt es TTimeZone leider noch nicht, aber wäre natürlich trotzdem schön zu wissen ob und wie es damit gehen würde. Dann könnte ich die Umsetzung verschieben bis ich eine neuere Delphi Version zur Verfügung habe.


Für die Inbetriebnahme des Systems, kann man natürlich auch einen extra Benutzer anlegen mit exakt den Rechten, die der benötigt.

Dann kann der in den "normalen" Dialogen herumwurschteln und das System einstellen.

Der Kiosk-Benutzer braucht das nicht zu können.
Du hast natürlich vollkommen recht der normale Anwender muss oder sollte das vielleicht auch nicht dürfen. Ich würde die Option vielleicht auch nur in einem Passwortgeschützen Servicebereich anbieten.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 10. Jul 2015, 18:58
Hallo-

Es war insgesamt doch mehr Aufwand als ich gedacht hätte.
Anbei ein kleines Konsolenprogramm was dir alle Zeitzonen im System auflistet (formatiert und lokalisiert) und deine lokale Zone ändern kann.

Delphi 2009 war vor meiner Zeit, keine Ahnung wie viel von dem Code man da übernehmen kann.
Angehängte Dateien
Dateityp: zip TimeZoneAdjustments.zip (12,8 KB, 16x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz