[VisualBasic] Systemdatum setzen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von gater001, 8. Oktober 2007 .

Schlagworte:
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 8. Oktober 2007
    Systemdatum setzen

    Tach Leute!
    Habe wieder mal 2 Frage!
    Ich möcht mit visual Basic versuchen die Systemzeit zu setzen, also jetzt meine Fragen:
    1.Könnt ihr vllt ein Beispiel zeigen wo die Systemzeit anhand einer Textbox eingegeben wird
    (In einer textbox anzeigen hab ich ja schon ist auch ganz einfach: z.B.
    "TextBox1.Text = Date.Today" )
    2.Könnt ihr mir ein beispiel zeigen in dem das Datum ausgegeben wird bissi berechnet wird und dann gesetzt wird? z.B.

    TextBox1.Text = Date.Today
    TextBox1.Text = TextBox1.Text - 7
    ' so komm ich jetzt auf 08102000(also 08.10.2000)
    ->Hier muss jetzt irgednwas mit Date rein dachte mir Date.Today =Textbox1.Text aber Date.Today ist Readonly

    PS: Benutze Visual Basic 2005 Express Edition/ und BW ist natürlich wieder drinn
     

  2. Anzeige
    Dealz: stark reduzierte Angebote finden.
  3. #2 8. Oktober 2007
    AW: Systemdatum setzen

    Also mit .net Mitteln alleine kannst du sowas net machen, da müsstest du auf die WinAPI zugreifen

    Hab hier mal das gefunden:
    Code:
    using System;
    using System.Runtime.InteropServices;
    
    public class ZeitSetzen
    {
     struct str_Zeit
     {
     public short Jahr;
     public short Monat;
     public short TagInDerWoche;
     public short Tag;
     public short Stunde;
     public short Minute;
     public short Sekunde;
     public short Millisekunde;
     }
     
     [DllImport("kernel32.dll", SetLastError=true)]
     static extern bool SetSystemTime(ref str_Zeit neueZeit);
    
     public void SetzeSystemzeit(DateTime NeueZeit)
     {
     str_Zeit Zeit = new str_Zeit();
     Zeit.Jahr = (short)NeueZeit.Year;
     Zeit.Monat = (short)NeueZeit.Month;
     Zeit.TagInDerWoche = (short)NeueZeit.DayOfWeek;
     Zeit.Tag = (short)NeueZeit.Day;
     Zeit.Stunde = (short)NeueZeit.Hour;
     Zeit.Minute = (short)NeueZeit.Minute;
     Zeit.Sekunde =(short)NeueZeit.Second;
     Zeit.Millisekunde = (short)NeueZeit.Millisecond;
    
     SetSystemTime(ref Zeit);
     } 
    }
    is jetzt C# Code, kenn mich mit der VB Syntax nicht wirklich aus
     
  4. #3 8. Oktober 2007
    AW: Systemdatum setzen

    Wow das ist jetzt auf jeden fall mehr als ich dachte,
    aber wo kann man den jetzt die Zeiten einsetzten?
    und kann ich das mit den Sekunden millisekunde etc weglassen ich meine ich brauch ja nur tag monat und jahr

    Außerdem muss das bestimm irgendwie anders gehen weil wenn ich das so reinkopiere dann zeigt er mir ziemlich viel falsch an
     
  5. #4 8. Oktober 2007
    AW: Systemdatum setzen

    Joa, wie gesagt ist jetzt C# Code, kein VB. Ich weis nicht wie das in der VB Syntax aussieht, aber so is dann halt der Ablauf:

    1. so ein struct wie abgebildet erstellen
    2. SetSystemTime aus kernel32.dll einbinden
    3. ne Methode schreiben der du die Zeit übergibst und einfach die entsprechenden Werte in das struct schreibst. Dann noch SetSystemTime mit dem gefüllten struct als Parameter aufrufen
     
  6. #5 9. Oktober 2007
    AW: Systemdatum setzen

    Moin,

    hab mal eben den Code in VB gewandelt. Die Klasse SystemTimeManager binde man in seinen Code ein.
    Code:
    Option Strict On
    Option Explicit On
    Option Compare Binary
    
    Imports System.Runtime.InteropServices
    
    Public Class SystemTimeManager
    
     Public Structure SystemTime
     Public Year As UInt16
     Public Month As UInt16
     Public DayOfWeek As UInt16
     Public Day As UInt16
     Public Hour As UInt16
     Public Minute As UInt16
     Public Second As UInt16
     Public Milliseconds As UInt16
     End Structure
    
     <DllImport("kernel32.dll")> _
     Public Shared Sub GetSystemTime(ByRef lpSystemTime As SYSTEMTIME)
     End Sub
    
     <DllImport("kernel32.dll")> _
     Public Shared Function SetSystemTime(ByRef lpSystemTime As SYSTEMTIME) As UInt32
     End Function
    
    End Class
    Zum Setzen des aktuellen Datums schreibt man beispielsweise sowas
    Code:
    Dim st As SystemTimeManager.SystemTime
    st.Year = CUShort(Date.Today.Year)
    st.Month = CUShort(Date.Today.Month)
    st.Day = CUShort(Date.Today.Day)
    SystemTimeManager.SetSystemTime(st)
    //Edit:
    Zum Auslesen des aktuellen Datums schreibe man beispielsweise sowas
    Code:
    Dim st As SystemTimeManager.SystemTime
    SystemTimeManager.GetSystemTime(st)
    Me.TextBox1.Text = String.Concat(st.Year.ToString, "-", st.Month.ToString, "-", st.Day.ToString)
    Hoffe das hilft.

    BG MaxDev
     

  7. Videos zum Thema
Die Seite wird geladen...