Forum | | | | 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 |
| | | | |
| | 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 |
| | | | |
| | 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 |
| | | | |
| | maroro | ja so funktioniert es ...vielen Dank |
| | | | |
| | Georg Teles | Sehr gut |
| | | | |
|
AntwortenThemenoptionen | 5.522 Betrachtungen |
ThemeninformationenDieses Thema hat 2 Teilnehmer: |