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. autoBert

Beiträge von autoBert

  • MouseClick() ist nicht gleich Mausklick?

    • autoBert
    • 28. Dezember 2018 um 12:55

    Mit den Codeschnipseln kann ich (andere war scheins auch) nichts anfangen. Du solltest also ein Beispielskript basteln, daß dein Anliegen/Problem verdeutlicht.

  • _GUICtrlListView_AddArray benötigt auf meinem Quad-Core 7x mehr Zeit als auf einem alten Dual-Core?!

    • autoBert
    • 20. Dezember 2018 um 12:27

    Mein etwas altersschwache Netbook liefert immer noch:

    Code
    --> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
    ! Benoetigte Zeit, um das Listview mit _GUICtrlListView_AddArray zu befuellen ($aLV[1600][32]): 00:00:03:153:2147483647
    
    ! MemoryStatus
    Percent of Mem in use : 83
    Physical Mem: Total   : 2026266624
    Physical Mem: Free    : 329748480
    Paging file: Total    : 4844838912
    Paging file: Free     : 1477885952
    User Mem: Total       : 140737488224256
    User Mem: Free        : 140732970659840
    Alles anzeigen

    Win10 Home 1803 64b.

    Die User Mem Angaben irritieren mich, welcher Speicher sollte so groß sein?

  • Arrays einzeln ausgeben

    • autoBert
    • 14. Dezember 2018 um 16:09
    Zitat von Joschy41

    Die Zeit könnte ich mir mal nehmen.

    wäre nützzlich wenn du tiefer einsteigen willst.


    Ich würde dein Problem so lösen:

    C
    #include <MsgBoxConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <Inet.au3>
    
    
    
    ;============== Begin Testdaten ==============
    
    Global $ip[10]
    
    For $i= 0  to 9
        $ip[$i] = '172.16.' & Random(1,8,1) & '.' & Random(1, 254,1)
    Next
    
    ;_ArrayDisplay($ip)
    
    ;============== Ende Testdaten ===============
    
    _MyIPsMsgBox($ip, 'Verbunden', 15)
    
    Func _MyIPsMsgBox($aIP, $sTitle = 'Connected: ', $iTimeOut = 0, $bTCPStartUpShutDown = True, $hParent = 0)
        #cs
        Functionname        _MyIPsMsgBox
        Parameter:            $aIP                    ein 1D array mit den verbundenen IP's
                            $sTitle                    Titel der GUI
                            $iTimeOut                wenn größer 0 dann max. Anzeigedauer der GUI,
                            $bTCPStartUpShutDown    True = TCP wird gestartet und auch wieder beendet
                                                    False = TCP wird nicht verändert
                            $hParent                Elter-GUI
        #ce
        If $iTimeOut < 0 Then $iTimeOut = 0
        Local $aIP2D[UBound($aIP)][2]
        Local $tdStart, $bClose = False
        Local $iEvent = Opt("GUIOnEventMode", 0) ;ursprünglichen Eventmode speichern
        if $bTCPStartUpShutDown Then TCPStartup()
        For $i = 0 To UBound($aIP) -1
            $aIP2D[$i][0] = $aIP[$i]
            $aIP2D[$i][1] = _TCPIpToName($aIP[$i], 0)
        Next
        if $bTCPStartUpShutDown Then TCPShutdown()
        Local $hGUI = GUICreate($sTitle, 256, 256, (@DesktopWidth-512) /2, (@DesktopHeight-512) /2, Default, Default, $hParent)
        Local $idLV = GUICtrlCreateListView('IP|Name',2,2,252,220)
        _GUICtrlListView_AddArray($idLV, $aIP2D)
        _GUICtrlListView_SetColumnWidth($idLV, 0, $LVSCW_AUTOSIZE)
        _GUICtrlListView_SetColumnWidth($idLV, 1, $LVSCW_AUTOSIZE_USEHEADER)
        Local $idBtnOK = GUICtrlCreateButton('OK',2, 225, 252)
        GUISetState()
        ; Loop until the user exits or timeout is reached
        $tdStart = TimerInit()
        While 1
            Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE, $idBtnOK
                    ExitLoop
    
            EndSwitch
            If $iTimeOut Then
                If TimerDiff($tdStart) > $iTimeOut * 1000 Then ExitLoop
            EndIf
        WEnd
    
        ; Delete the previous GUI and all controls.
        GUIDelete($hGUI)
        Opt("GUIOnEventMode", $iEvent) ;ursprünglichen Eventmode wiederherstellen
    EndFunc
    Alles anzeigen

    Den Testdateenteil mußt du gegen deine Daten tauschen.

  • Timer

    • autoBert
    • 12. Dezember 2018 um 18:12
    Zitat von germanidol

    Mein Ziel ist es das nach einer gewissen Zeit sobald ich den PC verlasse ein Script ausgeführt wird

    Dein PC bekommt im Normalfall nicht mit, daß du ihn verlassen hast. Mit _WinAPI_GetIdleTime kannst du aber feststellen, wie lange keine Tastatur oder Mouseaktivität war.

  • Flash-Test

    • autoBert
    • 12. Dezember 2018 um 18:03
    Zitat von Oscar

    Deswegen habe ich ja die Vermutung, dass bei autoBert die Scripte standardmäßig im 64-Bit-Modus ausgeführt werden.

    Korrekt, im 32-Bit modus funktioniert es auch bei mir:

    10026_Flash-Test v1.0 (beta).jpg

    warum die Speicherkarte im Lesen schlechtere Werte hat als beim Schreiben verstehe ich nicht. Beim Schreiben ermittelt dein Skript ~ gleichen Wert wie h2testw.

  • Mit _StringBetween nur jedes 1. - 4. - 7. usw. Vorkommen rausfiltern

    • autoBert
    • 12. Dezember 2018 um 14:07
    Zitat von Code4Fun

    Sorry, das verstehe ich jetzt überhaupt nicht.

    Ich auch (noch) nicht. Du solltest aber besser die Variablen nicht erst bei Bedarf deklarieren, sondern:

    • globale am Anfang des Skriptes
    • locale am Anfang der Funktion,

    lies dazu auch https://www.autoitscript.com/wiki/Best_codi…es_of_Variables.

  • Flash-Test

    • autoBert
    • 12. Dezember 2018 um 11:33

    Hallo Oscar,

    ich bekomme beim Testen einer mit exFat formatierten Speicherkarte folgende Konsolenausgabe:

    Code
    --> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
    FillBuffer-ASM-Code-Size: 34 Bytes
    CheckBuffer-ASM-Code-Size: 50 Bytes
    IOBuffer-Size: 64,0 MB
    
    @@ Debug(222) : $g_bReadWrite = True
    >Error code: 0
    !>11:22:30 AutoIt3.exe ended.rc:-1073741819
    +>11:22:30 AutoIt3Wrapper Finished.
    >Exit code: 3221225477    Time: 67.76

    Habe ich etwas überlesen und das Tool funktioniert nur mit NTFS formatierten Datenträgern?

    Passiert auch auf meiner Festplatte:

    Code
    --> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
    FillBuffer-ASM-Code-Size: 34 Bytes
    CheckBuffer-ASM-Code-Size: 50 Bytes
    IOBuffer-Size: 64,0 MB
    
    @@ Debug(222) : $g_bReadWrite = True
    >Error code: 0
    !>11:28:42 AutoIt3.exe ended.rc:-1073741819
    +>11:28:42 AutoIt3Wrapper Finished.
    >Exit code: 3221225477    Time: 21.26

    Win 10 Home 64 Bit 1803

    In beiden Fällen wird noch der Ordner Flashtest erstellt und eine Datei 000001.ft mit 0 Byte angelegt.

    mfg (auto)Bert

  • Mit _StringBetween nur jedes 1. - 4. - 7. usw. Vorkommen rausfiltern

    • autoBert
    • 11. Dezember 2018 um 12:49

    Da _StringBetween ja ein Array zurückliefert einfach Step 3 in einer For ... Next benutzen

    Code
    Global $aResult[99]
    
    For $i = 1 to 99
        $aResult[$i-1] = 'Ergebis: ' & $i
    Next
    
    For $i = 0 to UBound($aResult)-1 Step 3
        ConsoleWrite($aResult[$i] & @CRLF)
    Next
  • Windows Display driver/manager??

    • autoBert
    • 26. November 2018 um 18:33
    Zitat von Ovik

    Wenn die verschiedenen Instanzen gleichzeitig viele Msg-Boxen anzeigen sehe ich, dass "das System langsam wird". D. h. es geht die Prozessornutzung runter, weil wohl zu viel auf die Bearbeitung am Bildschirm wartet (?).

    Während eine MsgBox aktiv angezeigt wird, wartet diese Programminstanz auf das schliessen und dieses Warten erzeugt natürlich keine Prozessorlast. Du kannst aber den TimeOut Parameter von MsgBox verwenden um die MsgBox automatisch zu beenden.

    Zitat von AutoIt Hilfe

    Function MsgBox

    Displays a simple message box with optional timeout.

    MsgBox ( flag, "title", "text" [, timeout = 0 [, hwnd]] )

  • Zeit berechnen

    • autoBert
    • 26. November 2018 um 12:02

    Ohne dein Skript ist es schwer zu sagen wo dein Fehler ist. Vermutlich hast du vergessen die Zeitwerte zu Datumswerte inkl. Zeit umzuformatieren. Dies kannst du damit:

    Code
    $Anfangszeit = "1970/01/01 " & $Anfangszeit
    $Endzeit = "1970/01/01 " & $Endzeit

    erreichen. Es geht natürlich auch jedes andere Datum.

  • Forenupdate - November 2018 - Probleme / Anregungen / Feedback - Sammelthread

    • autoBert
    • 20. November 2018 um 15:12

    Das Bearbeiten von Beitägen funktioniert nicht. Das Einfügen von Zitaten verweigert auch ab und zu den Dienst.

  • ListView füllen und ProgressBar

    • autoBert
    • 20. November 2018 um 15:05
    Zitat von Code-Jack

    Dein Beispiel funzt und ist auch bei Erweiterung auf 1000 Datensätze angenehm flott.

    Das Beispiel nutzt eine Memory DB, bei Datenbank Datei wird es sich deutlich verlangsamen.

    Zitat von Code-Jack

    Vermutlich macht es Sinn, zudem noch alpines' Tipp aufzugreifen und das Array zuvor passend zu kreieren. Denn möglicherweise verursacht _SQLite_GetTable2d() massenhaft ReDims (muss ich testen, ob dem so ist).

    _SQLite_GetTable2d() wird eine Variable für das Array ByRef übergeben, das Array wird anhand der Rückgabe des ausgeführten SQL-Queries 1mal dimensioniert und in einer Schleife befüllt. Also kein einziges ReDim!

  • ListView füllen und ProgressBar

    • autoBert
    • 20. November 2018 um 12:59

    Da ich derzeit keine Beiträge bearbeiten kann, hier eine neue Version:

    C
    ; *** Start added by AutoIt3Wrapper ***
    #include <StaticConstants.au3>
    ; *** End added by AutoIt3Wrapper ***
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Add_Constants=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <MsgBoxConstants.au3>
    #include <SQLite.au3>
    #include <SQLite.dll.au3>
    #include <ColorConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <GuiListView.au3>
    
    Local $aResult, $iRows, $iColumns, $iRval, $iPercent
    
    _SQLite_Startup()
    If @error Then
        MsgBox($MB_SYSTEMMODAL, "SQLite Error", "SQLite.dll Can't be Loaded!")
        Exit -1
    EndIf
    ConsoleWrite("_SQLite_LibVersion=" & _SQLite_LibVersion() & @CRLF)
    _SQLite_Open() ; Open a :memory: database
    If @error Then
        MsgBox($MB_SYSTEMMODAL, "SQLite Error", "Can't Load Database!")
        Exit -1
    EndIf
    
    
    If Not _SQLite_Exec(-1, "CREATE TEMP TABLE persons (Name, Age);") = $SQLITE_OK Then _
            MsgBox($MB_SYSTEMMODAL, "SQLite Error", _SQLite_ErrMsg())
    For $i = 1 To 1000 ;datensätze * 1000
        If Not _SQLite_Exec(-1, "INSERT INTO persons VALUES ('Alice','43');") = $SQLITE_OK Then _
                MsgBox($MB_SYSTEMMODAL, "SQLite Error", _SQLite_ErrMsg())
        If Not _SQLite_Exec(-1, "INSERT INTO persons VALUES ('Bob','28');") = $SQLITE_OK Then _
                MsgBox($MB_SYSTEMMODAL, "SQLite Error", _SQLite_ErrMsg())
        If Not _SQLite_Exec(-1, "INSERT INTO persons VALUES ('Cindy','21');") = $SQLITE_OK Then _
                MsgBox($MB_SYSTEMMODAL, "SQLite Error", _SQLite_ErrMsg())
    Next
    
    Local $idListview
    
    GUICreate("SQLite with LV", 400, 300)
    $idListview = GUICtrlCreateListView("Name|Age", 2, 2, 394, 268)
    ; Alternate between the listview background color and the listview item background color.
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE)
    
    ; Set the background color for the listview.
    ; Odd listview items will be shown with the background color of the listview,
    ; even with the background color of the listview item.
    GUICtrlSetBkColor(-1, $COLOR_AQUA)
    $idPercent = GUICtrlCreateLabel('0 %', 2, 272, 35, 25, $SS_CENTERIMAGE)
    $idProgress = GUICtrlCreateProgress(42, 272, 355, 25)
    GUICtrlSetBkColor(-1, $COLOR_GREEN)
    
    
    GUISetState(@SW_SHOW)
    
    ; Query
    $tdStart = TimerInit()
    $iRval = _SQLite_GetTable2d(-1, "SELECT * FROM persons;", $aResult, $iRows, $iColumns)
    If $iRval = $SQLITE_OK Then
        $tdEnd = TimerDiff($tdStart)
        ConsoleWrite($tdEnd & @CRLF)
        _GUICtrlListView_BeginUpdate($idListview)
        For $i = 1 To $iRows
            GUICtrlCreateListViewItem($aResult[$i][0] & '|' & $aResult[$i][1], $idListview)
            if Int($i, 2) Then GUICtrlSetBkColor(-1, $COLOR_GREEN)    ;only even items must be coloured
            $iPercent = Int($i / $iRows * 100)
            If GUICtrlRead($idProgress) <> $iPercent Then
                GUICtrlSetData($idProgress, $iPercent)
                GUICtrlSetData($idPercent, $iPercent & ' %')
            EndIf
        Next
        _GUICtrlListView_EndUpdate($idListview)
        $tdEnd = TimerDiff($tdStart)
        ConsoleWrite($tdEnd & @CRLF)
    EndIf
    
    _SQLite_Close()
    _SQLite_Shutdown()
    
    ; Loop until the user exits.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    Alles anzeigen
  • ListView füllen und ProgressBar

    • autoBert
    • 20. November 2018 um 11:11
    Zitat von Bitnugger

    Ich vermute mal, GUICtrlSetBkColor funktioniert wohl nur, wenn das Item mit GUICtrlCreateListViewItem erstellt wurde.

    Korrekt, daher folgender Lösungsvorschlag (C + P quer durch die Hilfe):

    C
    #include <MsgBoxConstants.au3>
    #include <SQLite.au3>
    #include <SQLite.dll.au3>
    #include <ColorConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <GuiListView.au3>
    
    Local $aResult, $iRows, $iColumns, $iRval
    
    _SQLite_Startup()
    If @error Then
        MsgBox($MB_SYSTEMMODAL, "SQLite Error", "SQLite.dll Can't be Loaded!")
        Exit -1
    EndIf
    ConsoleWrite("_SQLite_LibVersion=" & _SQLite_LibVersion() & @CRLF)
    _SQLite_Open() ; Open a :memory: database
    If @error Then
        MsgBox($MB_SYSTEMMODAL, "SQLite Error", "Can't Load Database!")
        Exit -1
    EndIf
    
    Local $idListview
    
    GUICreate("ListView Set BkColor", 400, 300)
    $idListview = GUICtrlCreateListView("Name|Age", 2, 2, 394, 268)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE)
    GUICtrlSetBkColor(-1, $COLOR_AQUA)
    
    GUISetState(@SW_SHOW)
    
    
    ; Example Table
    ; Name        | Age
    ; -----------------------
    ; Alice       | 43
    ; Bob         | 28
    ; Cindy       | 21
    
    If Not _SQLite_Exec(-1, "CREATE TEMP TABLE persons (Name, Age);") = $SQLITE_OK Then _
            MsgBox($MB_SYSTEMMODAL, "SQLite Error", _SQLite_ErrMsg())
    For $i = 1 To 10    ;datensätze * 10
        If Not _SQLite_Exec(-1, "INSERT INTO persons VALUES ('Alice','43');") = $SQLITE_OK Then _
                MsgBox($MB_SYSTEMMODAL, "SQLite Error", _SQLite_ErrMsg())
        If Not _SQLite_Exec(-1, "INSERT INTO persons VALUES ('Bob','28');") = $SQLITE_OK Then _
                MsgBox($MB_SYSTEMMODAL, "SQLite Error", _SQLite_ErrMsg())
        If Not _SQLite_Exec(-1, "INSERT INTO persons VALUES ('Cindy','21');") = $SQLITE_OK Then _
                MsgBox($MB_SYSTEMMODAL, "SQLite Error", _SQLite_ErrMsg())
    Next
    
    ; Query
    $iRval = _SQLite_GetTable2d(-1, "SELECT * FROM persons;", $aResult, $iRows, $iColumns)
    If $iRval = $SQLITE_OK Then
        _GUICtrlListView_BeginUpdate($idListview)
        For $i = 1 To $iRows
            GUICtrlCreateListViewItem($aResult[$i][0] & '|' & $aResult[$i][1], $idListview)
            GUICtrlSetBkColor(-1, $COLOR_GREEN)
        Next
        _GUICtrlListView_EndUpdate($idListview)
    EndIf
    
    _SQLite_Close()
    _SQLite_Shutdown()
    
        ; Loop until the user exits.
        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE
        GUIDelete()
    Alles anzeigen
  • ListView füllen und ProgressBar

    • autoBert
    • 19. November 2018 um 10:41

    Nimm anstelle von _SQLite_Query _SQLite_GetTable2d.

    • Wenn dann noch das SQL Statement analog zur LV aufebaut ist kannst du auch noch anstelle von GUICtrlCreateListViewItem(um eine LV-Zeile zu erstellen) _GUICtrlListView_AddArray verwenden und das komplette Egebnis auf eimal einzutragen.
      Schnellste Methode
    • Falls es aber das Egebnis nicht zulässt, musst du in einer Schleife durch das erhaltene Array (Ergebbnis von _SQLite_GetTable2d) gehen und GUICtrlCreateListViewItem verwenden.
      Selbst diese Methode ist noch deutlich schneller als dein Ansatz mit _SQLite_Query.

    Die LV-Farben kannst du auch auf einmal setzen:

    Code
        ; Set colors
        _GUICtrlListView_SetBkColor($idListview, $CLR_MONEYGREEN)
        _GUICtrlListView_SetTextColor($idListview, $CLR_BLACK)
        _GUICtrlListView_SetTextBkColor($idListview, $CLR_MONEYGREEN)

    dies sollte auch noch einmal (minimal) Zeit sparen.

  • _DownloadWithProgress

    • autoBert
    • 18. November 2018 um 17:32
    Zitat von Code-Jack

    Wenn InetGet nicht unter allen Umständen funktioniert, dann betrifft das auch Oscars Code. Von daher halte ich es nicht für sinnvoll, einen eigenen Thread zu eröffnen.

    Ich schon, da das Problem nicht Oscars Skript betrifft und somit sein Thread unötig zumüllt aufbläht.

  • FileLock und PID - durch welchen Prozess ist eine Datei gesperrt/geöffnet

    • autoBert
    • 13. November 2018 um 13:03

    https://www.autoitscript.com/forum/topic/13…utoit-unlocker/ zeigt das es möglich ist.

  • Shoutbox weg?

    • autoBert
    • 13. November 2018 um 11:02

    Die SB wird jetzt überall vorangestellt, nervt (unnnötiger INet-Volumen Verbrauch)

    Gestern kam ich gar nicht auf autoit.de Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.

    Heute nicht auf Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen. Wobei, diese wohl nicht aktuell sein können (25/07/2014),

    Dateien

    Fatal Error Undefined index hasActiveFilter.txt 2,29 kB – 570 Downloads Fatal Error Use of undefined constant FORCE_LOGIN - assumed 'FORCE_LOGIN' (this will throw an Error in a future version of PHP).txt 10 kB – 626 Downloads
  • Mit Uhrzeiten rechnen

    • autoBert
    • 2. November 2018 um 10:53
    Zitat von gmmg

    ich denke mal da muss sogar das richtige Datum rein.

    wenn er nur mit der Zeit rechnen will genügt auch ein fiktives Datum. Für eine echte Arbeitszeiterfassung mit Dokumentation der Zeiten sind aber auch echte Daten erforderlich. Afair gibt es schon einige Skripte hierfür im Forum.

  • GDI+ Spielerei

    • autoBert
    • 30. Oktober 2018 um 14:12
    Zitat von o2candoo

    - Warum läuft das Programm schneller, wenn die Maus bewegt wird? Hat das etwas mit Multiprocessing, bzw. Multithreading zu tun? Wenn ja, wie kann ich es beheben?

    Du handelst deine GUI im MessageLoop Modus (GuiGetMsg), wenn du auf den OnEvent Modus wechsels ist dies behoben. Die benötigten Funktionen sind:

    Code
    Opt("GUIOnEventMode", 1) ; zum setzen 
    
    
    GUISetOnEvent()    ;Behandlungfür jedes von der GUI ausgelöste Event z.B.: $GUI_EVENT_CLOSE
    
    
    GUICtrlSetOnEvent();Behandlung für jedes von einem GuiContol ausgelöste Event.
    ....
    
    ;Schleife um Gui nicht zu schliessen
    While 1
       If $start = 1 Then
          _Calc()
          _Draw()
       EndIf
       Sleep(200) ;anpassen
    WEnd
    Alles anzeigen

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™