Datum in AutoIt speichern fuer SysDateTimePick32

  • ich möchte mehrere Daten speichern

    Daten = Datumswerte :?:

    in einer externen Applikation

    Da du erkennen konntest, dass es sich um ein SysDateTimePick32 - Control handelt (AutoItWindowInfo ?), brauchst du das Handle/die ID dieses Controls. und kannst dann mit den Funktionen aus der AutoIt-UDF darauf zugreifen.

    Schau dir mal das Bsp. zu _GUICtrlDTP_SetSystemTime an.


    Ich weiß jetzt nicht welcher Kalender dort verwendet wird, evtl. hilft dir dann auch das hier: Maske zum Markieren in Monatskalender erstellen

  • ja, es sind datumswerte und ich kann mir das format in dem ich sie lese aussuchen und moechte dann das datum entsprechend in dem SysDateTimePick32 setzen dessen id ich auch kenne. ich gucke mir mal das beispiel an, dankeschoen.

  • Bitnugger

    Hat den Titel des Themas von „Datum in Autoit speichern fuer SysDateTimePick32“ zu „Datum in AutoIt speichern fuer SysDateTimePick32“ geändert.
  • hi, ist mir noch etwas unklar:


    meine Kalenderbox enthaelt jahr monat tag yyyy-mm-dd und daneben einen kalender zum auswählen und ich möchte jetzt automatisiert das datum überschreiben. ich habe das datum in ein array gelesen und folgendes probiert:


    Local $hCalendar2 = GUICtrlGetHandle("SysDateTimePick321")

    _GUICtrlDTP_SetSystemTime($hCalendar2, $aBeginDateArray)


    wenn ich nur jahr monat tag in meinem array habe bemängel er das das array zu kurz ist und wenn ich fuer die zeit min 0en auffülle nimmt er es aber gibt false zurueck und aendert den wert nicht.

    was mache ich falsch?


    das element ist spähbar und wird als SysDateTimePick32 Instanz 1 angezeigt.

  • also im prinzip sehen die arrays so aus wie ich das erwartet habe, aber im array an 0. stelle steht bei mir die laenge nach dem stringsplit und in dem bsp ein bool, brauche ich den bool fuer das interface?

  • leider scheitert es immernoch mit dem setzen:


    mein array sieht jetzt so aus:

    False|2013|10|25|0|0|0

    und ich bekomme als rueckgabe false also setzen klappt nicht, kann ich infos bekommen woran es liegt und falls ja wie?

  • Bitte poste immer deinen Code. Sonst kann ich nicht sehen, was du falsch machst.

    Das Array muß 7 Elemente haben (daraus wird die Datumsstruktur befüllt) aber wenn du die Zeit auf '0' setzt, kannst du das beim Deklarieren auch weglassen. Beim Auslesen verwendet AutoIt dann für: kein Wert = 0.

    Also: $a_Date[7] = [False, 2013, 10, 25] ist identisch mit $a_Date[7] = [False, 2013, 10, 25, 0, 0, 0]


    EDIT:

    Für ein besseres Verständnis ist es durchaus sinnvoll sich auch einmal die UDF anzuschauen. In SciTE: Cursor auf "#include UDF-Datei.au3" setzen und <Alt+I>. öffnet die Include Datei.

    Die Funktion sieht dort so aus:

    AutoIt
    Func _GUICtrlDTP_SetSystemTime($hWnd, ByRef $aDate)
    Local $tDate = DllStructCreate($tagSYSTEMTIME)
    DllStructSetData($tDate, "Year", $aDate[1])
    DllStructSetData($tDate, "Month", $aDate[2])
    DllStructSetData($tDate, "Day", $aDate[3])
    DllStructSetData($tDate, "Hour", $aDate[4])
    DllStructSetData($tDate, "Minute", $aDate[5])
    DllStructSetData($tDate, "Second", $aDate[6])
    Return _GUICtrlDTP_SetSystemTimeEx($hWnd, $tDate, $aDate[0])
    EndFunc ;==>_GUICtrlDTP_SetSystemTime
  • es liegt am handle den bekomme ich nicht richtig:


    also es ist wie folgt ich kann alles mit autoit info ausspähen:

    die basic window info sagt mir das es ein #32770 Class Fenster ist und in diesem fenster befinden sich 2 Elemente der Class SysDateTimePick32 Instance 1 und 2 die ich bearbeiten möchte. mein Code für den Handle sieht so aus:

    Code
    Local $hCalendar1 = GUICtrlGetHandle("SysDateTimePick322")
    ; ich dachte die Controlid setzt sich aus Class+Instanz zusammen quasi SysDateTimePick32+instance2=SysDateTimePick322 scheint aber so nicht zu funktionieren? das hat bisher bei buttons und aehnlichem fuer mich auch immer so funktioniert
  • GUICtrlGetHandle("SysDateTimePick322")

    DAS geht nur für eigene Ctrl.

    Local $hCalendar = ControlGetHandle("FENSTERTITEL", "", "[CLASS:SysDateTimePick322; INSTANCE:1]") -- hier die Klassen- und Instancenamen für das Ctrl genau eintragen


    Übrigens: "[CLASS:#32770]" als Identifizierung für das Fenster ist etwas ungünstig, das ist die Standard-Windows-Fensterklasse.

  • Local $hCalendar = ControlGetHandle("FENSTERTITEL", "", "[CLASS:SysDateTimePick322; INSTANCE:1]")

    Bei CLASS:SysDateTimePick322 ist eine 2 zu viel...


    Local $hCalendar = ControlGetHandle("FENSTERTITEL", "", "[CLASS:SysDateTimePick32; INSTANCE:1]")

    Local $hCalendar = ControlGetHandle("FENSTERTITEL", "", "[CLASSNN:SysDateTimePick321]")


    ; ich dachte die Controlid setzt sich aus Class+Instanz zusammen quasi SysDateTimePick32+instance2=SysDateTimePick322 scheint aber so nicht zu funktionieren?

    Zu controlID liest du hier: https://www.autoitscript.com/autoit3/docs/intro/controls.htm

    Zitat

    ID - The internal control ID. The Control ID is the internal numeric identifier that windows gives to each control. It is generally the best method of identifying controls. In addition to the AutoIt Window Info Tool, other applications such as screen readers for the blind and Microsoft tools/APIs may allow you to get this Control ID

  • ok, vielen dank. ich versuche es morgen.

    das war ein missverstaendnis meinerseits da ich vorher controlcommand benutzt habe

    Function ControlCommand

    ControlCommand ( "title", "text", controlID, "command" [, "option"] )

    da steht als dritter parameter dann controlid und der sah immer so aus Button4 und dann habe angenommen es handelt sich um die gleiche art von controlid. aber jetzt brauche ich die ganze information und sie heisst dann wieder control id.