Deutsch
Forum

Windows Systemzeit setzen

 

maroro
Ich möchte beim starten des Rechners diesen auf eine von einem anderen Rechner ausgelesene Zeit setzen.
Das hier: [...] 
funktioniert nicht.

hier der Quelltext:
Declare Tim#,WoTag$[7],d!,wo%
Declare rt$,revt$
Def Lese_Datum(1)  ! "Kernel32", "GetSystemTime"
Def Setze_Datum(1) ! "Kernel32", "SetSystemTime"
' SYSTEMTIME - Struktur. Verwendet wird Tim#
'    WORD Tim#,0   Jahr
'    WORD Tim#,2  Monat
'    WORD Tim#,4  Wochentag 0= Sonntag, 1= Montag ... 6= Samstag
'    WORD Tim#,6  Tag
'    WORD Tim#,8  Stunde
'    WORD Tim#,10 Minute
'    WORD Tim#,12 Sekunde
'    WORD Tim#,14 Millisekunde
' initialisieren Wochentagsarray
WoTag$[0] = "Sonntag"
WoTag$[1] = "Montag"
WoTag$[2] = "Dienstag"
WoTag$[3] = "Mittwoch"
WoTag$[4] = "Donnerstag"
WoTag$[5] = "Freitag"
WoTag$[6] = "Samstag"
Dim Tim#,16
cls
'Zeit auslesen
rt$ = Remotetime("PC")
revt$ = dt("DateTimeStr","c")

if Len(trim$(rt$)) = 0

    Print "Fehler"

else

    if rt$ = revt$

        print "OK"

    else

        Print "Zeit setzen"
        'Zeit setzen
        Print "Remote:  "+rt$
        Print "Lokal: "+revt$
        '   Print substr$(substr$(rt$,3,"."),1," ")'jahr
        '   Print substr$(rt$,2,".")'Monat
        '   Print substr$(rt$,1,".")'Tag
        '   Print substr$(substr$(rt$,2," "),1,":")'Stunde
        '   Print substr$(rt$,2,":")'Minute
        '   Print substr$(rt$,3,":")'Sekunde
        d! = dt("setDateTime", substr$(substr$(rt$,3,"."),1," "), substr$(rt$,2,"."), substr$(rt$,1,"."), substr$(substr$(rt$,2," "),1,":"), substr$(rt$,2,":"), substr$(rt$,3,":"), 0)
        wo% = dt("getDoW", d!)'Wochentag eines Zeitpunktes
        case wo% = 7 : wo% = 0
        Word Tim#,0 = substr$(substr$(rt$,3,"."),1," ")'Jahr
        Word Tim#,2 = substr$(rt$,2,".")'Monat
        Word Tim#,4 = str$(wo%)
        Word Tim#,6 = substr$(rt$,1,".")'Tag
        Word Tim#, 8 = substr$(substr$(rt$,2," "),1,":")'Stunde
        Word Tim#,10 = substr$(rt$,2,":")'Minute
        Word Tim#,12 = substr$(rt$,3,":")'Sekunde
        '@Lese_Datum(Tim#)
        ' drucke Tag
        Print Wotag$[@Word(Tim#,4)],@Word(Tim#,6);".";@Word(Tim#,2);".";@Word(Tim#,0)
        ' drucke Uhrzeit
        Print @Word(Tim#,8);":";@Word(Tim#,10);":";@Word(Tim#,12)

        ifnot  Val(substr$(substr$(rt$,3,"."),1," ")) < 2018

            Print "setze Zeit"
            @Setze_Datum(Tim#)

        endif

        Print "Lokal: "+dt("DateTimeStr","c")

    endif

endif

' Falls Datum/Zeit gesetzt werden soll: Werte in Tim# entsprechend setzen und
' @Setze_Datum(Tim#)
' ausführen
waitinput
Dispose Tim#
End

Proc Remotetime

    parameters computername$
    Declare Zeit$,exc%
    ClearClip
    exc% = winExec(getEnv$("COMSPEC")+" /c net time \\\\"+computername$+ "  | clip ",0)

    while @GetExitCode(exc%) > 0

        ' Sleep 1

    endwhile

    Zeit$ = GetClip$()
    Zeit$ = Mid$(Zeit$,26+Len(computername$),19)
    'Print Zeit$
    return zeit$

endproc


wäre schön wenn hier jemand eine Idee hat warum das nicht funktioniert. Also es geht nur rein um das setzen der Zeit alles andere funktioniert.

Viele Grüße Maroro
 
13.04.2018  
 




Georg
Teles
Also bei mir funktioniert, statt Get/SetSystemTime ist auch Get/SetLocalTime geeignet für aktuelle Zeitzone
'Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
'Systemdatum und Systemzeit lesen und setzen
'Beispiel Lesen und setzen Systemdatum und Systemzeit. Für Profan 6.6.
'Version 1.0  13.6.2004.      Das Programm kann frei benutzt werden, für
'Schäden kann keine Haftung übernommen werden.
'Autor: Gerhard Putschalka
'email: g.putschalka@web.de
'homepage: https://members.telering.at/g.putschalka/index.html
Declare Tim#,WoTag$[7]
Def Lese_Datum(1)!"Kernel32","GetSystemTime"
Def Setze_Datum(1)!"Kernel32","SetSystemTime"
'----------# Erweiterung
Declare Azz#
Def Lese_Datum_AktuelleZeitzone(1)!"Kernel32","GetLocalTime"
Def Setze_Datum_AktuelleZeitzone(1)!"Kernel32","SetLocalTime"
'Aktuelle Zeitzone - Struktur.
'WORD Azz#,0  'Jahr
'WORD Azz#,2  'Monat
'WORD Azz#,4  'Wochentag
'WORD Azz#,6  'Tag
'WORD Azz#,8  'Stunde
'WORD Azz#,10 'Minute
'WORD Azz#,12 'Sekunde
'WORD Azz#,14 'Millisekunde
Dim Azz#,16
Lese_Datum_AktuelleZeitzone(Azz#)
'----------# Erweiterung ENDE
'SYSTEMTIME - Struktur. Verwendet wird Tim#
'WORD Tim#,0  'Jahr
'WORD Tim#,2  'Monat
'WORD Tim#,4  'Wochentag 0= Sonntag, 1= Montag ... 6= Samstag
'WORD Tim#,6  'Tag
'WORD Tim#,8  'Stunde
'WORD Tim#,10 'Minute
'WORD Tim#,12 'Sekunde
'WORD Tim#,14 'Millisekunde
'initialisieren Wochentagsarray
WoTag$[0] = "Sonntag"
WoTag$[1] = "Montag"
WoTag$[2] = "Dienstag"
WoTag$[3] = "Mittwoch"
WoTag$[4] = "Donnerstag"
WoTag$[5] = "Freitag"
WoTag$[6] = "Samstag"
Dim Tim#,16
Lese_Datum(Tim#)
'drucke Tag
Print Wotag$[Word(Tim#,4)],Word(Tim#,6),Word(Tim#,2),Word(Tim#,0)
'Print Wotag$[]
'drucke Uhrzeit
Print Word(Tim#,8),Word(Tim#,10),Word(Tim#,12)
'Falls Datum/Zeit gesetzt werden soll: Werte in Tim# entsprechend setzen und
'Setze_Datum(Tim#)
'ausführen
'----------# Erweiterung Integration
'drucke Tag
Print Wotag$[Word(Azz#,4)],Word(Azz#,6),Word(Azz#,2),Word(Azz#,0)
'drucke Uhrzeit
Print Word(Azz#,8),Word(Azz#,10),Word(Azz#,12)
'Falls Datum/Zeit gesetzt werden soll: Werte in Azz# entsprechend setzen und
Word azz#,0 = 2017'Beispiel Jahr zu 2017 ändern
Setze_Datum_AktuelleZeitzone(Azz#)
'ausführen
'----------# Erweiterung Integration ENDE
Waitinput
Dispose Tim#
Dispose Azz#
End

Damit das Setzen funktoniert muss man das Programm mit Admin-Rechten starten, dann klappt es

Bin mit RemotePC überfordert, hab leider keinen parat sry :/

Grüße Georg
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

13.04.2018  
 




Georg
Teles
Ich habe mal eigenen PC als Remote eingetragen und es hat geklappt - den Code etwas sortiert, als test +5 Minuten der eigenen Zeit eingetragen - außerdem habe ich Get/SetSystemTime zu Get/SetLocalTime geändert
Declare Tim#,WoTag$[7],d!,wo%
Declare rt$,revt$
Def Lese_Datum(1)  ! "Kernel32", "GetLocalTime"
Def Setze_Datum(1) ! "Kernel32", "SetLocalTime"
' SYSTEMTIME - Struktur. Verwendet wird Tim#
'    WORD Tim#,0   Jahr
'    WORD Tim#,2  Monat
'    WORD Tim#,4  Wochentag 0= Sonntag, 1= Montag ... 6= Samstag
'    WORD Tim#,6  Tag
'    WORD Tim#,8  Stunde
'    WORD Tim#,10 Minute
'    WORD Tim#,12 Sekunde
'    WORD Tim#,14 Millisekunde
' initialisieren Wochentagsarray
WoTag$[0] = "Sonntag"
WoTag$[1] = "Montag"
WoTag$[2] = "Dienstag"
WoTag$[3] = "Mittwoch"
WoTag$[4] = "Donnerstag"
WoTag$[5] = "Freitag"
WoTag$[6] = "Samstag"
Dim Tim#,16
cls
Declare y$,m$,d$,h$,n$,s$
'Zeit auslesen
rt$ = Remotetime("PC")
revt$ = dt("DateTimeStr","c")

if Len(trim$(rt$)) = 0

    Print "Fehler"

else

    if rt$ = revt$

        'print "OK" 'zum Testen ausgeblendet
        'else 'zum Testen ausgeblendet
        Print "Zeit setzen"
        'Zeit setzen
        Print "Remote:  "+rt$
        Print "Lokal: "+revt$
        '   Print substr$(substr$(rt$,3,"."),1," ")'jahr
        '   Print substr$(rt$,2,".")'Monat
        '   Print substr$(rt$,1,".")'Tag
        '   Print substr$(substr$(rt$,2," "),1,":")'Stunde
        '   Print substr$(rt$,2,":")'Minute
        '   Print substr$(rt$,3,":")'Sekunde
        y$ = substr$(substr$(rt$,3,"."),1," ")
        m$ = substr$(rt$,2,".")
        d$ = substr$(rt$,1,".")
        h$ = substr$(substr$(rt$,2," "),1,":")
        'n$ = substr$(rt$,2,":") 'original
        n$ = str$(Val(substr$(rt$,2,":"))+5)'als Test +5 Minuten
        s$ = substr$(rt$,3,":")
        d! = dt("setDateTime",y$,m$,d$,h$,n$,s$,0)
        wo% = dt("getDoW", d!)'Wochentag eines Zeitpunktes
        case wo% = 7 : wo% = 0
        Word Tim#,0 = y$
        Word Tim#,2 = m$
        Word Tim#,4 = str$(wo%)
        Word Tim#,6 = d$
        Word Tim#, 8 = h$
        Word Tim#,10 = n$
        Word Tim#,12 = s$
        '@Lese_Datum(Tim#)
        ' drucke Tag
        Print Wotag$[@Word(Tim#,4)],@Word(Tim#,6);".";@Word(Tim#,2);".";@Word(Tim#,0)
        ' drucke Uhrzeit
        Print @Word(Tim#,8);":";@Word(Tim#,10);":";@Word(Tim#,12)

        ifnot  Val(substr$(substr$(rt$,3,"."),1," ")) < 2018

            Print "setze Zeit"
            @Setze_Datum(Tim#)

        endif

        Print "Lokal: "+dt("DateTimeStr","c")

    endif

endif

' Falls Datum/Zeit gesetzt werden soll: Werte in Tim# entsprechend setzen und
' @Setze_Datum(Tim#)
' ausführen
waitinput
Dispose Tim#
End

Proc Remotetime

    parameters computername$
    Declare Zeit$,exc%
    ClearClip
    exc% = winExec(getEnv$("COMSPEC")+" /c net time \\\\"+computername$+ "  | clip ",0)

    while @GetExitCode(exc%) > 0

        ' Sleep 1

    endwhile

    Zeit$ = GetClip$()
    Zeit$ = Mid$(Zeit$,26+Len(computername$),19)
    'Print Zeit$
    return zeit$

endproc


Grüße
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

13.04.2018  
 




maroro
ja so funktioniert es ...vielen Dank
 
14.04.2018  
 




Georg
Teles
Sehr gut
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

14.04.2018  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.535 Betrachtungen

Unbenanntvor 0 min.
E.T.21.05.2022
Stringray05.01.2022
Thomas Zielinski29.08.2019
Matzbub03.06.2019
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Georg Teles (3x)
maroro (2x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie