Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Dialog "Zeitzone ändern" nachbauen (https://www.delphipraxis.net/185823-dialog-zeitzone-aendern-nachbauen.html)

Der schöne Günther 9. Jul 2015 16:10

AW: Dialog "Zeitzone ändern" nachbauen
 
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
Delphi-Quellcode:
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.

BadenPower 9. Jul 2015 16:24

AW: Dialog "Zeitzone ändern" nachbauen
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1308242)
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.


Sir Rufo 9. Jul 2015 18:46

AW: Dialog "Zeitzone ändern" nachbauen
 
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.

TUX_der_Pinguin 10. Jul 2015 07:24

AW: Dialog "Zeitzone ändern" nachbauen
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1308242)
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
Delphi-Quellcode:
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. ;-)


Zitat:

Zitat von Sir Rufo (Beitrag 1308259)
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.

Der schöne Günther 10. Jul 2015 18:58

AW: Dialog "Zeitzone ändern" nachbauen
 
Liste der Anhänge anzeigen (Anzahl: 1)
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.

TUX_der_Pinguin 11. Jul 2015 02:17

AW: Dialog "Zeitzone ändern" nachbauen
 
Ich gucke es mir Montag auf der Arbeit an. Vielen Dank schon mal das du hier deine Arbeit teilst ;-)

TUX_der_Pinguin 13. Jul 2015 08:56

AW: Dialog "Zeitzone ändern" nachbauen
 
So es ist Montag und ich habe mir deinen Code angesehen, soweit sehr gut nur fehlt mir da immer noch die Möglichkeit zu sehen welche Zeitzone zur Zeit im System eingestellt ist. Oder bin ich so blind das ich diese Funktion nicht erkenne !?

Der schöne Günther 13. Jul 2015 09:08

AW: Dialog "Zeitzone ändern" nachbauen
 
Ich habe das nicht neu gebaut, sondern würde
Delphi-Quellcode:
TTimeZone.Local
aus
Delphi-Quellcode:
System.DateUtils
verwenden. Wenn es das bei dir noch nicht gibt, kannst du
Delphi-Quellcode:
WinApi.Windows.GetDynamicTimeZoneInformation(..)
verwenden.

Bei der Gelegenheit- Der
Delphi-Quellcode:
TTimeZoneHelper
könnte vielleicht noch
Delphi-Quellcode:
Equals(..)
überschreiben um zu prüfen ob zwei Zeitzonen gleich sind.

TUX_der_Pinguin 13. Jul 2015 10:33

AW: Dialog "Zeitzone ändern" nachbauen
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1308524)
Ich habe das nicht neu gebaut, sondern würde
Delphi-Quellcode:
TTimeZone.Local
aus
Delphi-Quellcode:
System.DateUtils
verwenden. Wenn es das bei dir noch nicht gibt, kannst du
Delphi-Quellcode:
WinApi.Windows.GetDynamicTimeZoneInformation(..)
verwenden.

Bei der Gelegenheit- Der
Delphi-Quellcode:
TTimeZoneHelper
könnte vielleicht noch
Delphi-Quellcode:
Equals(..)
überschreiben um zu prüfen ob zwei Zeitzonen gleich sind.

Ich habe mir mal die Testversion von Delphi XE8 heruntergeladen, jedoch ob ich das neue TTimeZone.Local.DisplayName das "ältere" GetTimeZoneInformation oder GetDynamicTimeZoneInformation verwende erhalte ich nur "Mitteleuropäische Zeit" und damit kann ich leider nichts anfangen.

Der schöne Günther 13. Jul 2015 11:44

AW: Dialog "Zeitzone ändern" nachbauen
 
Was hast du denn sonst erwartet?

Willst du den String "(UTC+01:00) Amsterdam, Berlin, Bern, Rom, Stockholm, Wien" haben?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:35 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz