1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. schandor

Beiträge von schandor

  • Gui show bei WinActiv und Gui hide bei WinClose

    • schandor
    • 4. Dezember 2017 um 04:54

    Vielen Dank für Deine Hilfe.

    Jetzt komme ich schon ein ganzes Stück weiter.

  • Gui show bei WinActiv und Gui hide bei WinClose

    • schandor
    • 3. Dezember 2017 um 17:37
    Zitat von misterspeed

    Jupp dein Script sollte natürlich sicherstellen, dass nicht permanent zwischen den Stati hin und hergewechselt wird. Desweiteren sollte dein Script nur dann die Bild GUI aktualisieren, wenn sich etwas an der Kundennummer geändert hat (ansonsten könntest du ein Flackern des Bildes wahrnehmen). Ich würd außerdem nicht permanent neue Bildcontrols in der GUI erstellen, sondern den Inhalt des Controls ändern. Andernfalls hast du nach einiger Zeit hunderte oder tausende controls die übereinander liegen. Soweit ich weiß gibt es außerdem ein maximales Limit an controls, was dann zum Scriptabsturz oder eben zu keinen neuen controls mehr führt.

    EDIT: Es schadet im Übrigen auch nicht vorher zu prüfen ob für die Kundennummer überhaupt ein Bild exisitert. Falls nicht kannst du ja z.B. ein Standardbild einblenden.

    wie meinst Du das in meinem Fall, den Inhalt des Controls ändern ?? meinst Du "GUICtrlCreatePic" einmal erstellen und darin dann das Bild ändern ??

    Oh da hab ich im moment keinen Plan wie ich das machen soll....

    Könntest Du mir bitte dazu ein Beispiel nennen


    Besten Dank

  • Gui show bei WinActiv und Gui hide bei WinClose

    • schandor
    • 3. Dezember 2017 um 09:59

    ja, das war es schon.

    Wenn ich jetzt darüber nachdenke ist das völlig klar, ich hatte mich so auf die While Schleife versteift das ich das andere nicht mehr gesehen haben.


    Vielen Dank

  • Gui show bei WinActiv und Gui hide bei WinClose

    • schandor
    • 3. Dezember 2017 um 08:56

    Hallo, vielen Dank für Deine Antwort

    das mit den eindeutige Identifikationsmerkmale des Fensters war mir schon klar, hatte es in meinem Beispiel nicht extra erwähnt da hier nicht das Problem liegt.

    Das Problem liegt in der While Schleife, das GUI mit dem Bild öffnet und schließt sich im Sekundentakt.

    Verwende bitte mal folgendes Script, starte Notepad und gehe im Notepad unter Bearbeiten auf Ersetzen.

    Sobald das Fenster mit dem Ersetzen-Dialog geöffnet ist, öffnet sich mein GUI und schließt sich im Sekundentakt.

    Code
    #include <GUIConstantsEx.au3>
    
    $hGui = GUICreate("test", 200, 200,1,1)
    
    While sleep (1000)
        Switch WinActive ("Ersetzen", "")
            Case True
                $sText = ControlGetText("Ersetzen", "", "[CLASS:Static; INSTANCE:1]")
                _Show($sText)
            Case False
                _Hide()
        EndSwitch
    WEnd
    
    Func _Show($sText)
        GUISetState(@SW_SHOW, $hGui)
    ;~     GUICtrlCreatePic($sText & ".jpg",1,1)
        GUICtrlCreateLabel($sText,10,10)
    EndFunc
    
    Func _Hide()
        GUISetState(@SW_Hide, $hGui)
    EndFunc
    Alles anzeigen
  • Gui show bei WinActiv und Gui hide bei WinClose

    • schandor
    • 2. Dezember 2017 um 10:26

    Hallo zusammen,

    ich möchte zu dem Programm "Lexware Faktura+Auftrag" im Bereich Kundenverwaltung zu jedem Kunden ein spezielles Bild anzeigen lassen.

    Gedacht habe ich mir das so:

    1. Autoit Programm läuft im Hintergrund und wartet bis das Fenster der Kundenverwaltung von Lexware geöffnet wird (WinActive oder WinWaitActive ?)

    2. dann liest Autoit mit (ControlGetText) die KundenNummer (eindeutige Nr.) ein und zeigt in einem GUI das Bild welches mit dem Dateinamen der Kundennummer (z.B. 10134.jpg) gespeichert wurde.

    3. wird das Fenster der Kundenverwaltung geschlossen, soll das GUI mit dem Bild auch geschlossen werden und wartet wieder bis das Fenster z.B. mit einem anderen Kunden geöffnet wird und zeigt dann dessen Bild.

    ich hoffe ich habe das einigermassen verständlich beschrieben.

    versucht habe ich bis jetzt felgendes: (aber das mit der WHILE schleife funktioniert nicht richtig....

    C
    #include <GUIConstantsEx.au3>
    #include <MsgBoxConstants.au3>
    
    $hGui = GUICreate("test", 200, 200,1,1)
    
    While sleep (1000)
        Switch WinActive ("title", "")
            Case True
                $sText = ControlGetText("title", "", controlID)
                _Show()
            Case False
                _Hide()
        EndSwitch
    WEnd
    
    Func _Show()
        GUISetState(@SW_SHOW, $hGui)
        GUICtrlCreatePic($sText & ".jpg",1,1)
    EndFunc
    
    Func _Hide()
        GUISetState(@SW_Hide, $hGui)
    EndFunc
    Alles anzeigen


    Ich würde mich freuen wenn mir da jemand auf die Sprünge helfen kann..

    Besten Dank

  • Progressbar zur Scriptlaufzeit einbinden.

    • schandor
    • 16. September 2013 um 07:39

    @ misterspeed

    das mit dem "For $i = 1 to 1" ist mir dann auch aufgefallen....
    habs natürlich geändert.

    Das InetGet geht jetzt auch, ich ermittel zuerst mit InetGetSize die Größe
    und vergleiche dann den Wert mit der heruntergeladenen Größe.

    Ich bedanke mich nocheinmal ganz dolle bei euch...

  • Progressbar zur Scriptlaufzeit einbinden.

    • schandor
    • 15. September 2013 um 08:07

    @ Krabat
    nee, progressbar ist schon gut, das animierte gif hätte als notlösung genommen...


    die Progressbar funktioniert jetzt ziemlich gut, hab nur noch ein Problem beim suchen in Outlook,
    da bleibt die Progressbar einfach stehen....

    [autoit]

    For $i = 1 to 1
    GUICtrlSetData($progressbar2,(100*$i)/1)
    Global $aItems = _OL_ItemFind($oOutlook, "Personal Folders\Kalender", $olAppointment, "", "Categories", "Schichtplan", "Start,EntryID,Subject" , "")
    Next
    GUICtrlSetData($progressbar1,33)

    [/autoit]

    ich habe keine idee wie ich das lösen könnte...

  • Progressbar zur Scriptlaufzeit einbinden.

    • schandor
    • 14. September 2013 um 16:19

    da bin ich wieder....

    klappt schon sehr gut, vielen dank nochmal....

    bei click auf Start, dauert es gefühlte 3 bis 5 Sekunden bis die Progressbar losrennt...
    ich vermute es liegt an den 3 folgenden aktionen die noch vorher gemacht werden.

    Hat da evtl. jemand noch eine kleine Hilfestellung wie ich diese aktionen noch mit in die Progressbar bekomme.

    Zeile 42: InetGet("http://www.xxxxxxxxxxx.xx/xxxxx.csv", "C:\Outlook-Temp\xxxxx.csv",1,0)
    Zeile 46: _FileReadToArray("C:\Outlook-Temp\xxxxx.csv", $neu_file)
    Zeile 64: Global $aItems = _OL_ItemFind($oOutlook, "Personal Folders\Kalender", $olAppointment, "", "Categories", "Schichtplan", "Start,EntryID,Subject" , "")

    das habe ich versucht

    [autoit]


    For $i = 1 to 1
    Sleep(10)
    GUICtrlSetData($progressbar2,(100*$x)/1)
    InetGet("http://www.xxxxxxxxxxx.xx/xxxxx.csv", "C:\Outlook-Temp\xxxxx.csv",1,0)
    $x = $x + 1
    next
    GUICtrlSetData($progressbar1,5)

    [/autoit]

    angepasst:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <String.au3>
    #include <Array.au3>
    #include <IE.au3>
    #include <C:\Outlook-Temp\OutlookEX\OutlookEX.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $message
    Global $alt_file
    Global $neu_file
    Global $a_split
    Global $a_Var
    Global $n_split
    Global $n_Var

    [/autoit] [autoit][/autoit] [autoit]

    Global $progressbar1, $progressbar2, $button, $wait, $s, $msg, $m
    GUICreate("Meine GUI Progressbar", 220, 100, 100, 200)
    $progressbar1 = GUICtrlCreateProgress(10, 10, 200, 20)
    GUICtrlSetColor(-1, 32250); Funktioniert nicht mit Windows XP Style
    $progressbar2 = GUICtrlCreateProgress(10, 40, 200, 20)
    $button = GUICtrlCreateButton("Start", 75, 70, 70, 20)
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    if $msg = $button Then
    test()
    Exit
    EndIf
    if $msg = $GUI_EVENT_CLOSE Then Exit
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func test()
    GUICtrlSetData($progressbar1,0)
    ; -----------------------------------------------------------------------------------------------------------
    ; Schichtplan CSV Datei von Internetseite einlesen bzw. downloaden.
    ; -----------------------------------------------------------------------------------------------------------
    InetGet("http://www.xxxxxxxxxxx.xx/xxxxx.csv", "C:\Outlook-Temp\xxxxx.csv",1,0)
    ; -----------------------------------------------------------------------------------------------------------
    ; Schichtplan CSV Datei in ein Array lesen
    ; -----------------------------------------------------------------------------------------------------------
    _FileReadToArray("C:\Outlook-Temp\xxxxx.csv", $neu_file)
    _ArrayDelete($neu_file, 0)
    Global $n_caldays[UBound($neu_file)]
    Global $n_entryid[UBound($neu_file)]
    Global $n_subject[UBound($neu_file)]
    Global $n_start[UBound($neu_file)]
    Global $n_end[UBound($neu_file)]
    Global $n_AllDayEvent[UBound($neu_file)]
    Global $n_ReminderSet[UBound($neu_file)]
    Global $n_ReminderMinutesBeforeStart[UBound($neu_file)]
    Global $n_Categories[UBound($neu_file)]
    Global $n_split

    [/autoit] [autoit][/autoit] [autoit]

    ; -----------------------------------------------------------------------------------------------------------
    ; Vorhandene Outlook Kalendereinträge in Arrays schreiben
    ; -----------------------------------------------------------------------------------------------------------
    Global $oOutlook = _OL_Open()
    Global $aFolder = _OL_FolderAccess($oOutlook, "Personal Folders\Kalender")
    Global $aItems = _OL_ItemFind($oOutlook, "Personal Folders\Kalender", $olAppointment, "", "Categories", "Schichtplan", "Start,EntryID,Subject" , "")
    _ArrayDelete($aItems, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Global $a_caldays[UBound($aItems)]
    Global $a_entryid[UBound($aItems)]
    Global $a_subject[UBound($aItems)]
    Global $a_start[UBound($aItems)]

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $x = 0
    For $i = 0 to Ubound($aItems) -1

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($progressbar2,(100*$x)/(UBound($aItems)-1))
    $a_caldays[$x] = $aItems[$x][0] & " - " & $aItems[$x][2]
    $a_entryid[$x] = $aItems[$x][1]
    $a_subject[$x] = $aItems[$x][2]
    $a_start[$x] = stringLeft($aItems[$x][0], 8)
    $x = $x + 1
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ;~ 1
    GUICtrlSetData($progressbar1,17)

    [/autoit] [autoit][/autoit] [autoit]

    ; -----------------------------------------------------------------------------------------------------------
    ; Werte aus Aktuellem Schichtplan aus CSV zur weiterverarbeitung in Arrays schreiben.
    ; -----------------------------------------------------------------------------------------------------------
    $x = 0
    For $i = 0 to UBound($neu_file) - 1
    GUICtrlSetData($progressbar2,(100*$x)/(UBound($neu_file)-1))
    $n_split = StringSplit($neu_file[$x], ";")
    $n_caldays[$x] = $n_split[2] & " - " & $n_split[1]
    $n_subject[$x] = $n_split[1]
    $n_start[$x] = stringleft($n_split[2], 8)
    $n_end[$x] = $n_split[3]
    $n_AllDayEvent[$x] = $n_split[4]
    $n_ReminderSet[$x] = $n_split[5]
    $n_ReminderMinutesBeforeStart[$x] = $n_split[6]
    Switch $n_split[1]
    Case "Variable", "Früh", "Spät/Früh (getauscht)", "Nacht/Früh(getauscht)", "A-Nacht/M-Tag (getauscht)", "Sonder Früh", "V Früh", "M-Tag", "Sonder M-Tag", "V M-Tag"
    $n_Categories[$x] = "Frühdienst; " & $n_split[7]
    Case "Spät", "Früh/Spät (getauscht)", "Nacht/Spät(getauscht)", "Sonder Spät", "V Spät", "Nacht/Spät (getauscht)", "Spät (HomeOffice)"
    $n_Categories[$x] = "Spätdienst; " & $n_split[7]
    Case "Nacht", "Früh/Nacht (getauscht)", "Spät/Nacht (getauscht)", "M-Tag/A-Nacht (getauscht)", "Sonder Nacht", "V Nacht", "A-Nacht", "Sonder A-Nacht", "V A-Nacht"
    $n_Categories[$x] = "Nachtdienst; " & $n_split[7]
    Case "Früh (Krank)", "Spät (Krank)", "Nacht (Krank)", "M-Tag (Krank)", "A-Nacht (Krank)", "V (Krank)"
    $n_Categories[$x] = "Krank; " & $n_split[7]
    Case "Früh (Urlaub)", "Spät (Urlaub)", "Nacht (Urlaub)", "M-Tag (Urlaub)", "A-Nacht (Urlaub)", "V (Urlaub)"
    $n_Categories[$x] = "Urlaub; " & $n_split[7]
    Case "Früh/- (Frei)", "Spät/- (Frei)", "Nacht/- (Frei)", "M-Tag/- (Frei)", "A-Nacht/- (Frei)", "Urlaub (Frei)", "V (Frei)"
    $n_Categories[$x] = "Frei; " & $n_split[7]
    EndSwitch
    $x = $x + 1
    Next
    GUICtrlSetData($progressbar1,34)

    [/autoit] [autoit][/autoit] [autoit]

    ; -----------------------------------------------------------------------------------------------------------
    ; ArrayList Object mit Datumswerte aus vorhandenen Outlook Kalendereinträge.
    ; -----------------------------------------------------------------------------------------------------------
    $a_AList = ObjCreate("System.Collections.ArrayList")
    $x = 0
    For $i in $a_caldays

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($progressbar2,(100*$x)/(UBound($a_caldays)-1))
    $a_AList.add ($i)
    $x = $x + 1
    Next
    GUICtrlSetData($progressbar1,51)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $n_AList = ObjCreate("System.Collections.ArrayList")
    $x = 0
    For $i in $n_caldays

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($progressbar2,(100*$x)/(UBound($n_caldays)-1))
    $n_AList.add ($i)
    $x = $x + 1
    Next
    GUICtrlSetData($progressbar1,68)
    ; -----------------------------------------------------------------------------------------------------------
    ; Datum beider Arrays vergleichen und ggf. Outlook Kalendereintrag ändern oder hinzufügen.
    ; -----------------------------------------------------------------------------------------------------------
    $x = 0
    For $i in $n_start
    GUICtrlSetData($progressbar2,(100*$x)/(UBound($n_start)-1))
    If not $a_AList.Contains ($n_caldays[$x]) Then
    $index = _ArraySearch($a_start, $i)
    $n_start_date = StringMid($n_caldays[$x], 7, 2) & "." & StringMid($n_caldays[$x], 5, 2) & "." & StringMid($n_caldays[$x], 1, 4) & " " & StringMid($n_caldays[$x], 9, 2) & ":" & StringMid($n_caldays[$x], 11, 2) & ":" & StringMid($n_caldays[$x], 13, 2)
    $n_end_date = StringMid($n_end[$x], 7, 2) & "." & StringMid($n_end[$x], 5, 2) & "." & StringMid($n_end[$x], 1, 4) & " " & StringMid($n_end[$x], 9, 2) & ":" & StringMid($n_end[$x], 11, 2) & ":" & StringMid($n_end[$x], 13, 2)
    If $index <> -1 Then
    $message = StringMid($n_caldays[$x], 7, 2) & "." & StringMid($n_caldays[$x], 5, 2) & "." & StringMid($n_caldays[$x], 1, 4) & " wurde nach """ & $n_subject[$x] & """ geändert!" & @CRLF
    _OL_ItemModify($oOutlook, $a_entryid[$index],Default, "Subject=" & $n_subject[$x], "Start=" & $n_start_date, "End=" & $n_end_date, "Categories=" & $n_Categories[$x])
    Else
    $message = $message & StringMid($n_caldays[$x], 7, 2) & "." & StringMid($n_caldays[$x], 5, 2) & "." & StringMid($n_caldays[$x], 1, 4) & " """ & $n_subject[$x] & """ wurde hinzugefügt!" & @CRLF
    $oItem = _OL_ItemCreate($oOutlook, $olAppointmentItem, "Personal Folders\Kalender", "", "Subject=" & $n_subject[$x] , "Start=" & $n_start_date, "End=" & $n_end_date, "Categories=" & $n_Categories[$x], "Location=", "RequiredAttendees=" & $oOutlook.GetNameSpace("MAPI" ).CurrentUser.Name)
    $oItem.save
    EndIf
    EndIf
    $x = $x + 1
    Next
    GUICtrlSetData($progressbar1,85)

    [/autoit] [autoit][/autoit] [autoit]

    $x = 0
    For $i in $a_start
    GUICtrlSetData($progressbar2,(100*$x)/(UBound($a_start)-1))
    If not $n_AList.Contains ($a_caldays[$x]) Then
    $index = _ArraySearch($n_start, $i)
    If $index <> -1 Then
    Else
    $message = $message & StringMid($a_caldays[$x], 7, 2) & "." & StringMid($a_caldays[$x], 5, 2) & "." & StringMid($a_caldays[$x], 1, 4) & " """ & $a_subject[$x] & """ wurde gelöscht!" & @CRLF
    _OL_ItemDelete($oOutlook, $a_entryid[$x])
    _OL_Close($oOutlook)
    EndIf
    EndIf
    $x = $x + 1
    Next
    GUICtrlSetData($progressbar1,100)
    IF $message = "" Then
    msgbox(64,"Schichtplan Update-Meldung","keine Änderungen vorgenommen!")
    Else
    msgbox(64,"Schichtplan Update-Meldung",$message)
    EndIf
    EndFunc

    [/autoit]
  • Progressbar zur Scriptlaufzeit einbinden.

    • schandor
    • 14. September 2013 um 14:09

    ok, vielen dank euch....

    ich werds mal versuchen und mich dann wieder melden ob es geklappt hat, und wenn nicht dann sowieso 8)

  • Progressbar zur Scriptlaufzeit einbinden.

    • schandor
    • 14. September 2013 um 13:34

    @ misterspeed
    oh das hört sich doch sehr gut an...

    aber ich bin ja schon daran gescheitert eine progressbar unterzubringen

  • Progressbar zur Scriptlaufzeit einbinden.

    • schandor
    • 14. September 2013 um 13:28

    Kurzbeschreibung vom Script:

    Es wird eine CSV Datei aus dem i-Net heruntergeladen und in ein bzw. mehrer Arrays geschrieben (_FileReadToArray)

    dann werden alle Outlook Kalendereinträge mit der Kategorie
    "Schichtplan" eingelesen und ebenfalls in ein bzw. mehrer Arrays
    geschrieben

    Die Arrays werden miteinander verglichen, vorhande Kalendereinträge ggf.
    geändert oder gelöscht, neue Kalendereintrage hinzugefügt.

    Das ganze funktioniert wunderbar.


    Jetzt ist es so, das einlesen und schreiben bzw. verändern der
    Kalendereinträge und das vergleiche der Arrays dauert eine gewisse Zeit.

    Für diese Zeit würde ich gerne eine Progressbar einbinden... ich bekomme es aber nicht hin.

    ich weiß nicht wie ich das noch genauer beschreiben soll....

    mir würde ja schon eine gif animation reichen z.B. [Blockierte Grafik: http://www.philips.de/consumerfiles/assets/img/progress_bar.gif] die ich in ein gui mit Text "Moment bitte, blablabla" einbinde...
    sorry aber ich weiß nicht wie ich das in mein script unterbringe

  • Progressbar zur Scriptlaufzeit einbinden.

    • schandor
    • 14. September 2013 um 13:05

    also jetzt verstehe ich garnichts mehr

    Zitat

    .....als die Datei, wenn überhaupt eine erstellt wird, ......

    wenn ich die Anzahl der ermittelten Kalendereinträge in eine Datei schreibe, wieso dann "wenn überhaupt eine erstellt wird. ???

  • Progressbar zur Scriptlaufzeit einbinden.

    • schandor
    • 14. September 2013 um 12:44

    erstmal Danke für die Antwort....

    ich glaube das habe ich nicht richtig verstanden...
    in der csv datei befinden sich die aktuellen daten die ich mit den Outlook Kalendereintrage vergleich und ggf. in outlook anpasse.

    selbst das auslesen der Outlook Kalendereinträge und das vergleichen der Daten aus der csv Datei benötigen einiges an Zeit.
    ich könnte allerdings beim erstmaligen lauf, die anzahl der outlook Kalendereintrage in eine Datei schreiben die ich dann immer wieder auslese und aktualisiere...

    aber das hilft mir nicht wirklich weiter

  • Progressbar zur Scriptlaufzeit einbinden.

    • schandor
    • 14. September 2013 um 09:16

    Hallo miteinander,

    ich versuche vergeblich eine Progressbar in angehängtes Script einzubinden und hoffe Ihr könnt mir helfen.

    Kurzbeschreibung vom Script:
    Es wird eine CSV Datei aus dem i-Net heruntergeladen und in ein bzw. mehrer Arrays geschrieben (_FileReadToArray)
    dann werden alle Outlook Kalendereinträge mit der Kategorie "Schichtplan" eingelesen und ebenfalls in ein bzw. mehrer Arrays geschrieben
    Die Arrays werden miteinander verglichen, vorhande Kalendereinträge ggf. geändert oder gelöscht, neue Kalendereintrage hinzugefügt.
    Das ganze funktioniert wunderbar.

    Jetzt ist es so, das einlesen und schreiben bzw. verändern der Kalendereinträge und das vergleiche der Arrays dauert eine gewisse Zeit.
    Für diese Zeit würde ich gerne eine Progressbar einbinden... ich bekomme es aber nicht hin.

    Übergangsweise lasse ich in der Zeit ein "SplashTextOn("Update", "Moment bitte, Kalender-Update wird durchgeführt.",400,50)" anzeigen.

    Kann mir da jemand helfen bitte.

    Div. Beispiele und unendliches Suchem im I-net var erfolglos.


    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <String.au3>
    #include <Array.au3>
    #include <IE.au3>
    #include <OutlookEX\OutlookEX.au3>

    [/autoit] [autoit][/autoit] [autoit]

    local $message
    Local $alt_file
    Local $neu_file
    local $a_split
    local $a_Var
    local $n_split
    local $n_Var

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    SplashTextOn("Update", "Moment bitte, Kalender-Update wird durchgeführt.",400,50)

    [/autoit] [autoit][/autoit] [autoit]

    ; -----------------------------------------------------------------------------------------------------------
    ; Schichtplan CSV Datei von Internetseite einlesen bzw. downloaden.
    ; -----------------------------------------------------------------------------------------------------------
    InetGet("http://www.xxxxxxxxxxx.xx/xxxxx/xxxxxxxx.csv", "E:\xxxxxxxx\xxxxxxxx.csv",1,0)

    [/autoit] [autoit][/autoit] [autoit]

    ; -----------------------------------------------------------------------------------------------------------
    ; Schichtplan CSV Datei in ein Array lesen
    ; -----------------------------------------------------------------------------------------------------------
    _FileReadToArray("E:\xxxxxxxx\xxxxxxxx.csv", $neu_file)

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDelete($neu_file, 0)
    local $n_caldays[UBound($neu_file)]
    local $n_entryid[UBound($neu_file)]
    local $n_subject[UBound($neu_file)]
    local $n_start[UBound($neu_file)]
    local $n_end[UBound($neu_file)]
    local $n_AllDayEvent[UBound($neu_file)]
    local $n_ReminderSet[UBound($neu_file)]
    local $n_ReminderMinutesBeforeStart[UBound($neu_file)]
    local $n_Categories[UBound($neu_file)]
    local $n_split

    [/autoit] [autoit][/autoit] [autoit]

    ; -----------------------------------------------------------------------------------------------------------
    ; Vorhandene Outlook Kalendereinträge in Arrays schreiben
    ; -----------------------------------------------------------------------------------------------------------
    Global $oOutlook = _OL_Open()
    Global $aFolder = _OL_FolderAccess($oOutlook, "icloud\Kalender")
    Global $aItems = _OL_ItemFind($oOutlook, "icloud\Kalender", $olAppointment, "", "Categories", "Schichtplan", "Start,EntryID,Subject" , "")
    _ArrayDelete($aItems, 0)
    _OL_Close($oOutlook)

    [/autoit] [autoit][/autoit] [autoit]

    local $a_caldays[UBound($aItems)]
    local $a_entryid[UBound($aItems)]
    local $a_subject[UBound($aItems)]
    local $a_start[UBound($aItems)]
    $x = 0
    For $i = 0 to Ubound($aItems) -1
    $a_caldays[$x] = $aItems[$x][0] & " - " & $aItems[$x][2]
    $a_entryid[$x] = $aItems[$x][1]
    $a_subject[$x] = $aItems[$x][2]
    $a_start[$x] = stringLeft($aItems[$x][0], 8)
    $x = $x + 1
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ; -----------------------------------------------------------------------------------------------------------
    ; Werte aus Aktuellem Schichtplan aus CSV zur weiterverarbeitung in Arrays schreiben.
    ; -----------------------------------------------------------------------------------------------------------
    $x = 0
    For $i = 0 to UBound($neu_file) - 1
    $n_split = StringSplit($neu_file[$x], ";")
    $n_caldays[$x] = $n_split[2] & " - " & $n_split[1]
    $n_subject[$x] = $n_split[1]
    $n_start[$x] = stringleft($n_split[2], 8)
    $n_end[$x] = $n_split[3]
    $n_AllDayEvent[$x] = $n_split[4]
    $n_ReminderSet[$x] = $n_split[5]
    $n_ReminderMinutesBeforeStart[$x] = $n_split[6]
    Switch $n_split[1]
    Case "Variable", "Früh", "Spät/Früh (getauscht)", "Nacht/Früh(getauscht)", "A-Nacht/M-Tag (getauscht)", "Sonder Früh", "V Früh", "M-Tag", "Sonder M-Tag", "V M-Tag"
    $n_Categories[$x] = "Frühdienst; " & $n_split[7]
    Case "Spät", "Früh/Spät (getauscht)", "Nacht/Spät(getauscht)", "Sonder Spät", "V Spät", "Nacht/Spät (getauscht)", "Spät (HomeOffice)"
    $n_Categories[$x] = "Spätdienst; " & $n_split[7]
    Case "Nacht", "Früh/Nacht (getauscht)", "Spät/Nacht (getauscht)", "M-Tag/A-Nacht (getauscht)", "Sonder Nacht", "V Nacht", "A-Nacht", "Sonder A-Nacht", "V A-Nacht"
    $n_Categories[$x] = "Nachtdienst; " & $n_split[7]
    Case "Früh (Krank)", "Spät (Krank)", "Nacht (Krank)", "M-Tag (Krank)", "A-Nacht (Krank)", "V (Krank)"
    $n_Categories[$x] = "Krank; " & $n_split[7]
    Case "Früh (Urlaub)", "Spät (Urlaub)", "Nacht (Urlaub)", "M-Tag (Urlaub)", "A-Nacht (Urlaub)", "V (Urlaub)"
    $n_Categories[$x] = "Urlaub; " & $n_split[7]
    Case "Früh/- (Frei)", "Spät/- (Frei)", "Nacht/- (Frei)", "M-Tag/- (Frei)", "A-Nacht/- (Frei)", "Urlaub (Frei)", "V (Frei)"
    $n_Categories[$x] = "Frei; " & $n_split[7]
    EndSwitch
    $x = $x + 1
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ; -----------------------------------------------------------------------------------------------------------
    ; ArrayList Object mit Datumswerte aus vorhandenen Outlook Kalendereinträge.
    ; -----------------------------------------------------------------------------------------------------------
    $a_AList = ObjCreate("System.Collections.ArrayList")
    For $i in $a_caldays
    $a_AList.add ($i)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $n_AList = ObjCreate("System.Collections.ArrayList")
    For $i in $n_caldays
    $n_AList.add ($i)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ; -----------------------------------------------------------------------------------------------------------
    ; Datum beider Arrays vergleichen und ggf. Outlook Kalendereintrag ändern oder hinzufügen.
    ; -----------------------------------------------------------------------------------------------------------
    $x = 0
    For $i in $n_start
    If not $a_AList.Contains ($n_caldays[$x]) Then
    $index = _ArraySearch($a_start, $i)
    $n_start_date = StringMid($n_caldays[$x], 7, 2) & "." & StringMid($n_caldays[$x], 5, 2) & "." & StringMid($n_caldays[$x], 1, 4) & " " & StringMid($n_caldays[$x], 9, 2) & ":" & StringMid($n_caldays[$x], 11, 2) & ":" & StringMid($n_caldays[$x], 13, 2)
    $n_end_date = StringMid($n_end[$x], 7, 2) & "." & StringMid($n_end[$x], 5, 2) & "." & StringMid($n_end[$x], 1, 4) & " " & StringMid($n_end[$x], 9, 2) & ":" & StringMid($n_end[$x], 11, 2) & ":" & StringMid($n_end[$x], 13, 2)
    If $index <> -1 Then
    $message = StringMid($n_caldays[$x], 7, 2) & "." & StringMid($n_caldays[$x], 5, 2) & "." & StringMid($n_caldays[$x], 1, 4) & " wurde nach """ & $n_subject[$x] & """ geändert!" & @CRLF
    Global $oOutlook = _OL_Open()
    Global $aFolder = _OL_FolderAccess($oOutlook, "icloud\Kalender")
    Global $oOutlook = _OL_Open()
    Global $aFolder = _OL_FolderAccess($oOutlook, "icloud\Kalender")
    _OL_ItemModify($oOutlook, $a_entryid[$index],Default, "Subject=" & $n_subject[$x], "Start=" & $n_start_date, "End=" & $n_end_date, "Categories=" & $n_Categories[$x])
    _OL_Close($oOutlook)
    Else
    $message = $message & StringMid($n_caldays[$x], 7, 2) & "." & StringMid($n_caldays[$x], 5, 2) & "." & StringMid($n_caldays[$x], 1, 4) & " """ & $n_subject[$x] & """ wurde hinzugefügt!" & @CRLF
    Global $oOutlook = _OL_Open()
    Global $aFolder = _OL_FolderAccess($oOutlook, "icloud\Kalender")
    $oItem = _OL_ItemCreate($oOutlook, $olAppointmentItem, "icloud\Kalender", "", "Subject=" & $n_subject[$x] , "Start=" & $n_start_date, "End=" & $n_end_date, "Categories=" & $n_Categories[$x], "Location=", "RequiredAttendees=" & $oOutlook.GetNameSpace("MAPI" ).CurrentUser.Name)
    $oItem.save
    _OL_Close($oOutlook)
    EndIf
    EndIf
    $x = $x + 1
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $x = 0
    For $i in $a_start
    If not $n_AList.Contains ($a_caldays[$x]) Then
    $index = _ArraySearch($n_start, $i)
    If $index <> -1 Then
    Else
    $message = $message & StringMid($a_caldays[$x], 7, 2) & "." & StringMid($a_caldays[$x], 5, 2) & "." & StringMid($a_caldays[$x], 1, 4) & " """ & $a_subject[$x] & """ wurde gelöscht!" & @CRLF
    Global $oOutlook = _OL_Open()
    Global $aFolder = _OL_FolderAccess($oOutlook, "icloud\Kalender")
    _OL_ItemDelete($oOutlook, $a_entryid[$x])
    _OL_Close($oOutlook)
    EndIf
    EndIf
    $x = $x + 1
    Next

    [/autoit] [autoit][/autoit] [autoit]

    SplashOff()

    [/autoit] [autoit][/autoit] [autoit]

    IF $message = "" Then
    msgbox(64,"Schichtplan Update-Meldung","keine Änderungen vorgenommen!")
    Else
    msgbox(64,"Schichtplan Update-Meldung",$message)
    EndIf
    Exit

    [/autoit]
  • Java-Fenster abfragen

    • schandor
    • 19. Februar 2009 um 16:45

    Hi, ich nochma....

    ich denke ich habs jetzt, das logon-Fenster war immer dann inaktiv wenn im IE-Hauptfenster irgendein Java-Applet gestartet (automatisch) wurde.
    Hab einfach ein winwait() auf das Logon-Fenster gemacht und das Hauptfenster dann mit winsetstatus() auf @SW_DISABLED gesetzt und nach dem Logon wieder auf @SW_ENABLED

    scheint zu funktionieren.....

    Danke für die Hilfe und Denkanstöße

  • Java-Fenster abfragen

    • schandor
    • 19. Februar 2009 um 16:12

    Hi,

    leider gehts mit "winsetontop" auch nicht, das Fenster bleibt zwar im Vordergrund, verliert aber kurzzeitig den Focus, sprich es ist mehrmals für einen bruchteil einer sekunde nicht aktiv,
    meistens genau dann wenn ich den send() durchführe und der geht natürlich dann in die binsen.

    Habe zwar nichts gefunden aber vieleicht gibt es ja eine Methode ein Fenster zu ZWINGEN Aktiv zu bleiben.... (zumindest für eine gewisse Zeit) den status "ACTIVE" zu behalten.

  • Java-Fenster abfragen

    • schandor
    • 18. Februar 2009 um 13:29

    Hi, erstma danke für die Antworten.....

    aber das Eintragen des Usernamen und Passwort mit send() ist nicht das Problem, das Problem ist den Zeitpunkt abzupassen WANN
    ich den Send() machen kann.

    Wenn ich z.B.

    [autoit]


    Winwait("Log On - " & StringTrimLeft($Anlage, 1))
    WinActivate("Log On - " & StringTrimLeft($Anlage, 1),"")
    send(@Username)
    send("{TAB}")
    send($READ_PW)
    send("{Enter}")

    [/autoit]


    dann läuft das Scrript weiter sobald das Logon-Fenster einmal da war, aber es verschwindet ja sofort wieder und nach unbestimmter Zeit kommt es wieder, das macht es
    auch mehrmals, ist abhängik von der Anzahl geladener Applets oder so ähnlich.
    Also mit anderen worten, wenn ich genau weiß das das Fenster genau 4 mal erscheint und ich den Login beim 4ten mal machen kann würde ich so vorgehen:

    [autoit]


    $Fenster = 0
    Do
    WinWait("Log On - " & StringTrimLeft($Anlage, 1))
    $Fenster = $Fenster + 1
    until $Fenster = 4
    WinActivate("Log On - " & StringTrimLeft($Anlage, 1),"")
    send(@Username)
    send("{TAB}")
    send($READ_PW)
    send("{Enter}")

    [/autoit]

    aber ich weiß leider vorher nicht wie oft das Logon-Fenster erscheint.

    Also das Logon-Fenster verschwindet nicht, es legt sich nur immer ein anderes Fenster darüber....
    moment, ich glaub mit winsetontop könnte es gehen. ich teste mal....

  • Java-Fenster abfragen

    • schandor
    • 18. Februar 2009 um 09:30

    Hallo zusammen,

    ich habe ein Problem mit einer Java Anwendung im Internet-Explorer und dem dazugehörigem Logon-Fenster.
    Ich möchte gerne den Logon "Benutzername und Passwort" automatisieren doch leider gelingt mir das nicht.

    Also, beim starten der URL öffnet sich ein IE Ladefenster woraus wiederum ein IE Fenster geöffnet wird, nach umbestimmter Zeit
    öffnet sich dann ein Java-Logon Fenster welches sich auch mehrmals wieder schließt bzw. in den Hintergrund verschwindet.
    Mit WINWAIT oder so komme ich nicht weiter da z.B. beim senden der Logondaten dieses Fenster in den Hintergrund geht und nicht mehr Aktiv ist.
    Abzählen wie oft das Logonfenster aktiv ist bringt auch nichts, da das auch immer unterschiedlich ist.
    Hängt wohl von dem Java-Applet ab welches im zweiten Fenster geladen wird, und welche Java-Version ich gerade am jeweiligen Rechner habe.
    (ist beides auch immer unterschiedlich)

    Hat da wer vieleicht eine Idee und kann mir weiterhelfen. Bin jetzt auch nicht so der Auto-It spezie, ich wurschtel mich da immer so durch.

    Besten Dank schoma, schönen Tag Euch allen.

  • stringreplace startwert ?

    • schandor
    • 12. Juni 2007 um 08:40

    SUPER, ich danke euch vielmals.....habs jetzt verstanden.......

    hier mal das fertige script...

    Spoiler anzeigen
    [autoit]


    #include <GuiConstants.au3>
    #Include <GuiEdit.au3>
    #include <GuiList.au3>
    #include <string.au3>
    #include <Misc.au3>
    #include <IE.au3>
    #include <INet.au3>
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Local $color
    $oIE = ObjCreate("Shell.Explorer.2")

    [/autoit] [autoit][/autoit] [autoit]

    GuiCreate("Test-Edit", 500, 280)
    $BTN_ende = GuiCtrlCreateButton("Ende", 380, 220, 90, 20)
    $BTN_bold = GuiCtrlCreateButton("Fett", 20, 220, 80, 20)
    GUICtrlSetFont (-1,9, 800, 0)
    $BTN_underline = GuiCtrlCreateButton("Unterstrichen", 110, 220, 80, 20)
    GUICtrlSetFont (-1,9, 400, 4)
    $BTN_kursiv = GuiCtrlCreateButton("Kursiv", 200, 220, 80, 20)
    GUICtrlSetFont (-1,9, 400, 2)
    $BTN_br = GuiCtrlCreateButton("<BR>", 20, 250, 80, 20)
    GUICtrlSetFont (-1,9, 400, 2)
    $BTN_color = GuiCtrlCreateButton("Color", 110, 250, 80, 20)
    $BTN_vorschau = GuiCtrlCreateButton("Vorschau", 200, 250, 80, 20)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $INS_beschreibung = GuiCtrlCreateEdit("", 20, 40, 440, 160)

    [/autoit] [autoit][/autoit] [autoit]

    GuiSetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE or $msg = $BTN_ende
    ExitLoop
    Case $msg = $BTN_bold
    $a_sel = _GUICtrlEditGetSel($INS_beschreibung)
    $zahl = $a_sel[2] - $a_sel[1]
    $c_sel = StringMid(GUICtrlRead($INS_beschreibung),$a_sel[1]+1,$zahl)
    _GUICtrlEditReplaceSel ( $INS_beschreibung, 1, "<B>" & $c_sel & "</B>" )
    Case $msg = $BTN_kursiv
    $a_sel = _GUICtrlEditGetSel($INS_beschreibung)
    $zahl = $a_sel[2] - $a_sel[1]
    $c_sel = StringMid(GUICtrlRead($INS_beschreibung),$a_sel[1]+1,$zahl)
    _GUICtrlEditReplaceSel ( $INS_beschreibung, 1, "<I>" & $c_sel & "</I>" )
    Case $msg = $BTN_underline
    $a_sel = _GUICtrlEditGetSel($INS_beschreibung)
    $zahl = $a_sel[2] - $a_sel[1]
    $c_sel = StringMid(GUICtrlRead($INS_beschreibung),$a_sel[1]+1,$zahl)
    _GUICtrlEditReplaceSel ( $INS_beschreibung, 1, "<U>" & $c_sel & "</U>" )
    Case $msg = $BTN_br
    $a_sel = _GUICtrlEditGetSel($INS_beschreibung)
    $zahl = $a_sel[2] - $a_sel[1]
    $c_sel = StringMid(GUICtrlRead($INS_beschreibung),$a_sel[1]+1,$zahl)
    _GUICtrlEditReplaceSel ( $INS_beschreibung, 1, "<BR>" & $c_sel & @CRLF )
    Case $msg = $BTN_color
    $color = _ChooseColor (2, 0xFF0000, 2)
    If not @error Then
    $color = StringTrimLeft($color, 2)
    $a_sel = _GUICtrlEditGetSel($INS_beschreibung)
    $zahl = $a_sel[2] - $a_sel[1]
    $c_sel = StringMid(GUICtrlRead($INS_beschreibung),$a_sel[1]+1,$zahl)
    _GUICtrlEditReplaceSel ( $INS_beschreibung, 1, "<FONT COLOR=""#"& $color & """>" & $c_sel & "</FONT>" )
    EndIf

    Case $msg = $BTN_vorschau
    Global $html_pref[1]
    _ArrayAdd($html_pref, "<html><head>")
    _ArrayAdd($html_pref, "<style type=""text/css""><!--")
    _ArrayAdd($html_pref, "BODY { font-family:Tahoma; font-size:9pt; background-color:#FFF2D5; white-space:nowrap }")
    _ArrayAdd($html_pref, "table { font-size:9pt; padding:0px; white-space:nowrap } --></style>")
    _ArrayAdd($html_pref, "<title>Titel</title></head><body>")
    _ArrayAdd($html_pref, "<span style=""color:#000000;font-size:-3;font-family:Comic Sans MS;font-weight:bold"">")
    _ArrayAdd($html_pref, "<table width=""100%"" border=""0"" style=""border:solid 2px #dc143c"" cellspacing=""0"" cellpadding=""5"">")
    _ArrayAdd($html_pref, "<tr><td><table border=""0"" cellspacing=""2"" cellpadding=""1""><tr valign=""top"">")
    _ArrayAdd($html_pref, "<td>")
    _ArrayAdd($html_pref, "<table border=""0"" cellpadding=""1"" cellspacing=""2"" width=""100%"">")
    _ArrayAdd($html_pref, "<tr valign=""top"">")
    _ArrayAdd($html_pref, "<td>")
    _ArrayAdd($html_pref, "<table border=""0"" cellpadding=""1"" cellspacing=""2"" width=""100%"">")
    _ArrayAdd($html_pref, "<tr valign=""top"">")
    _ArrayAdd($html_pref, "<td width=""125"" nowrap align=""right""><b>Datum:</b></td>")
    _ArrayAdd($html_pref, "<td nowrap><!-- xDATUMx -->" & @MDAY & "." & @MON & "." & @YEAR & "<!-- xDATUMx --></td>")
    _ArrayAdd($html_pref, "</tr>")
    _ArrayAdd($html_pref, "<tr valign=""top"">")
    _ArrayAdd($html_pref, "<td width=""125"" nowrap align=""right""><b>Zeit:</b></td>")
    _ArrayAdd($html_pref, "<td nowrap><!-- xZEITx -->" & @HOUR & ":" & @MIN & "<!-- xZEITx --></td>")
    _ArrayAdd($html_pref, "</tr>")
    _ArrayAdd($html_pref, "<tr valign=""top"">")
    _ArrayAdd($html_pref, "<td width=""125"" nowrap align=""right""><b>Name:</b></td>")
    _ArrayAdd($html_pref, "<td nowrap><!-- xNAMEx -->" & @UserName & "<!-- xNAMEx --></td>")
    _ArrayAdd($html_pref, "</tr>")
    _ArrayAdd($html_pref, "<tr valign=""top"">")
    _ArrayAdd($html_pref, "<td width=""125"" nowrap align=""right""><b>Änderung:</b></td>")
    _ArrayAdd($html_pref, "<td><!-- xTEXTx -->" & GUICtrlRead($INS_beschreibung) & "<!-- xTEXTx --></td>")
    _ArrayAdd($html_pref, "</tr>")
    _ArrayAdd($html_pref, "</table>")
    _ArrayAdd($html_pref, "</div></div></td></tr></table>")
    _ArrayAdd($html_pref, "</body></html>")

    [/autoit] [autoit][/autoit] [autoit]

    $array_string = _ArrayToString ( $html_pref, @TAB)
    $oIE = ObjCreate("Shell.Explorer.2")
    GUICreate ( "Vorschau", 720, 220,(@DesktopWidth-640)/2, (@DesktopHeight-580)/2 , $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)
    $GUIActiveX = GUICtrlCreateObj ( $oIE, 10, 10 , 700 , 170 )
    $GUI_Button_Back = GuiCtrlCreateButton ("Ende", 300,190, 100, 20)
    GUISetState ()
    $source = $array_string
    $oIE.navigate("about:blank")
    _IEPropertySet ($oIE, "innerhtml", $source)
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE or $msg = $GUI_Button_Back
    ExitLoop
    EndSelect
    Wend
    GUIDelete ()
    Case Else
    EndSelect
    WEnd

    [/autoit]

    funktioniert echt gut....danke nochmal

  • stringreplace startwert ?

    • schandor
    • 12. Juni 2007 um 04:57

    mh, tut mir echt leid aber ich verstehe das nicht.

    Du liest die Quelle einer Webseite ein, also eine vorhandene Datei.
    In Deinem Fall die ......./history.htm

    ich habe aber noch keine Datei, nur den Text in meinem GuiCtrlCreateEdit,

    es sei denn ich kann folgendes benutzen:

    Spoiler anzeigen
    [autoit]


    #include <IE.au3>
    #include <INet.au3>
    $source = GUICtrlRead($INS_beschreibung)
    $oIE = _IE_Example ("basic")
    _IEPropertySet ($oIE, "innerhtml", $source)

    [/autoit]

    das werde ich gleich mal ausprobieren.....

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™