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

  • FileCopy abbrechen wenn Bedingung erfüllt

    • autoBert
    • 25. Juli 2012 um 14:24

    Ein FileCopy lässt sich nicht unterbrechen.Du müsstest schon über DLL-Calls die Original Windows Routinen ansprechen. Jierfür habe ich schon eine UDF gesehen, benutze einfach einmal die SuFu oder Google.
    Auch mit dem on chesstiger angesprochenen XCOPY sollte ein Abbruch möglich sein.

    Dein Vorhaben klingt so als ob du etwas zu verbergen hättest was dem zu überwachendem Mitarbeiter nicht auffallen darf.

    mfg autoBert

  • ich checks nicht ... checkbox in listview

    • autoBert
    • 25. Juli 2012 um 13:59

    Teste einmal diese Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #Include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 357, 366, 192, 124)
    $ListView = GUICtrlCreateListView(" |Hi|Moin|xD", 0, 0, 353, 335, _
    BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT), BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES)) ;$LVS_SHOWSELALWAYS
    ; wichtig ist der Stil $LVS_Report und der eweiterte Stil $LVS_EX_Checkboxes
    $CheckIt = GUICtrlCreateButton("&Check", 120, 340, 113)
    For $i = 1 To 99
    GUICtrlCreateListViewItem("|" & $i & "| aaaaaaaaaaaaaa|" & $i, $ListView)
    Next
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $CheckIt
    For $i = 0 To _GUICtrlListView_GetItemCount($ListView) - 1
    ;Schleifenbeginn da das erste Item den Index 0 hat von 0 bis Anzahl -1

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

    If _GUICtrlListView_GetItemChecked($ListView, $i) Then ; wenn geChecked (angehakt) dann
    $aItemText = _GUICtrlListView_GetItemTextArray($ListView, $i)
    ;Inhalt aller Spalten dieser Zeile dem Array $aItemText zuweisen
    ;$aItemText[0] enthält die Anzahl der Spalten
    ;$aItemText[1] Checked oder Unchecked (wir haben aber nur geChecked also keine Auswertung erforderlich)
    ;$aItemText[2] Hi
    ;$aItemText[3] Moin
    ;$aItemText{4]xD
    ConsoleWrite($aItemText[2] & " " & $aItemText[3] & @CRLF)

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

    ; Automatisch an die Stelle hinscrollen
    _GUICtrlListView_EnsureVisible($ListView, $i)
    Sleep(Random(250,750,1))
    EndIf
    Next
    EndSwitch
    WEnd

    [/autoit]

    mfg autoBert

  • _IELoadWait Problem

    • autoBert
    • 25. Juli 2012 um 12:38
    Zitat von iczcrash


    Ich würde gerne _IELoadWait auf eine Seite anwenden die nicht durch _IECreate geöffnet wurde.
    Ist dies möglich?

    Auf was willst du warten, wenn du nichts öffnest?

  • Klich auf Icons abfragen

    • autoBert
    • 24. Juli 2012 um 22:39

    Wenn die Icons in einer Schleife fortlaufend erzeugt wurden wird bei der Abfrage welches gedrückt wurde keine For-Schleife benötigt, eine simple Rechnung tut es auch: IconId = MsgId-Id des ersten Icons.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <File.au3>
    #include <Array.au3>

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

    $aFiles = _FileListToArray(@WindowsDir & "\cursors\", "*.ani", 1)
    _ArrayDelete($aFiles,0)

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

    Global $aIcons[10]

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

    GUICreate("Meine GUI Icons", 250, 450)
    For $i = 0 To UBound($aIcons) - 1
    $aIcons[$i] = GUICtrlCreateIcon(@WindowsDir & "\cursors\" & $aFiles[$i], -1, 10, 5 + $i * 40, 32, 32)
    Next

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

    GUISetState(@SW_SHOW)

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $aIcons[0] To $aIcons[UBound($aIcons) - 1]
    $iIconId = $msg - $aIcons[0]
    MsgBox(0, "Icon-Klick", "ID = " & $aIcons[$iIconId] & " Name: " & $aFiles[$iIconId])
    EndSwitch
    WEnd

    [/autoit]

    mfg autoBert

  • IEFormElementOptionSelect Problem

    • autoBert
    • 24. Juli 2012 um 17:02

    Hallo Spion,

    ich in der Meinung dies liegt daran dass die Seite nach dem Auswählen des 1. DropDown-Menüs nicht aktualisiert, Versuchge es einfach einmal mit

    [autoit]

    _IELoadWait ($oIE)

    [/autoit]

    nach jedem setzen eines Wertes,

    mfg autoBert

  • Klick auf leere Form

    • autoBert
    • 24. Juli 2012 um 15:41
    Zitat von v206

    Vielen Dank euch beiden. Hat beides funktioniert.


    Schön, dann ist dein Problem ja gelöst. Schön wäre es allerdings auch wenn du das Thema auf gelöst stellst. Dazu einfach deinen Eröffnungsbeitrag bearbeiten und den Präfix (Nähe Überschrift) auf gelöst stellen,

    danke autoBert

  • Zeileumbruch in GUICtrl-Edit

    • autoBert
    • 24. Juli 2012 um 12:50
    Zitat von Strahleman

    Aber wenn ich Zeit habe schreibe ich die Bedeutungen der Style-Werte als Kommentar daneben. ...Und manchmal vergesse ich es aber auch


    und warumhast du sie nach der Erinnerung von BugFix nicht hinein editiert?

    mfg autoBert

  • Klick auf leere Form

    • autoBert
    • 24. Juli 2012 um 12:39

    Deine GUI ist ja nicht leer, sie enthält doch ein Hintergrundbild Den Klick darauf kannst du auch abfragen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $sPicPath = "D:\Programme\AutoIt3\Examples\GUI\mslogo.jpg" ;<==== anpassen

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

    GUICreate("Meine GUI mit Bild", 257, 68, -1, -1, BitOR($WS_SIZEBOX, $WS_SYSMENU)) ; Erstellt ein GUI-Fenster welches mittig ausgerichtet wird.

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

    GUISetBkColor(0xE0FFFF)
    $idPic = GUICtrlCreatePic($sPicPath, 0, 0, 255, 40)

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

    GUISetState()

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

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $idPic
    MsgBox(0, "", "Klick auf das Bild")
    EndSwitch
    WEnd

    [/autoit]

    mfg autoBert

  • Outlook automation?

    • autoBert
    • 24. Juli 2012 um 02:27

    Jallo dabronko1,

    für Outlook (nicht Outlook Express) gibt es die Outlook-UDF. FTP-Funktionen sind in der FTPex.au3 welche bei AutoIt standardmässig mitgeliefert wird, hier solltest du das Beispiel zu

    [autoit]

    _FTP_FilePut

    [/autoit]

    in der dt. Hilfe anschauen,

    mfg autoBert

  • ContextMenuItems mit GuiGetMsg

    • autoBert
    • 23. Juli 2012 um 14:19
    Zitat von zwockel

    nur ich bekomms nicht hin, dass sobald ein item angeklickt wurde i was gemacht wird,....jemand ne idee?


    Ich habe das Skript mal um eine WM_Notify-Eventhandler ergänzt:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiListView.au3>

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

    ;Opt('MustDeclareVars', 1)
    ;Rechtsklick auf das listview
    GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events")
    Global $Finished = IniRead("Settings.ini", "Path", "Finished", ""), $count = 1
    Dim $lol[1], $list[1], $Size[1], $Date[1]
    Dim $listview
    $search = FileFindFirstFile($Finished & "\*.*")
    ; Check if the search was successful
    If $search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
    EndIf
    ; Dateien im Verzeichnis $Finished finden und arrays bei jeder gefundenen Datei ReDim'en
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    ReDim $lol[$count + 1], $list[$count + 1], $Size[$count + 1], $Date[$count + 1]
    $lol[$count] = $file
    $count += 1
    WEnd
    ; Dateigröße der gefunden Dateien ermitteln
    For $i = 1 To UBound($lol) - 1
    $Size[$i] = FileGetSize($Finished & "\" & $lol[$i])
    Next
    ;Erstelldatum ermitteln und in DD.MM.YYYY umwandeln
    For $i = 1 To UBound($lol) - 1
    $Date[$i] = FileGetTime($Finished & "\" & $lol[$i], 1, 1)
    $new = StringTrimRight($Date[$i], 6)
    $Date[$i] = StringRight($new, 2) & "." & StringTrimLeft(StringLeft($new, 6), 4) & "." & StringTrimRight($new, 4)
    Next
    ; Close the search handle
    FileClose($search)
    _Gui()
    Func _Gui()
    Local $hGui, $item1, $item2, $item3, $nMsg
    $hGui = GUICreate("listview items", 500, 500, -1, $WS_EX_ACCEPTFILES) ; Erstellt die MainGui
    GUISetBkColor(0x00E0FFFF) ; will change background color
    $listview = GUICtrlCreateListView(" Dateiname | Erstelldatum | Größe ", 10, 10, 400, 400) ; Hier wird das ListView erstellt
    ; Name, Datum, und Größe in das ListView eintragen
    For $i = 1 To UBound($list) - 1
    $list[$i] = GUICtrlCreateListViewItem($lol[$i] & "|" & $Date[$i] & "|" & $Size[$i] & " kb", $listview)
    Next
    GUISetState() ; Gui anzeigen
    ;Endlosschleife um die Gui aufrecht zu halten
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $listview
    MsgBox(0, "listview", "clicked=" & GUICtrlGetState($listview), 2)
    EndSwitch
    WEnd
    EndFunc ;==>_Gui

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

    Func WM_Notify_Events($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $listview Then
    ;ConsoleWrite($code & @CRLF)
    Switch $code
    ;case $NM_CLICK,$NM_DBLCLK, ;Klick
    Case $NM_RCLICK ;Rechtsklick
    If _GUICtrlListView_GetSelectedCount($listview) > 0 Then
    For $i = 0 To _GUICtrlListView_GetItemCount($listview)
    If _GUICtrlListView_GetItemSelected($listview, $i) Then
    $aItem = _GUICtrlListView_GetItemTextArray($listview, $i)
    MsgBox(0, "Rechts-Klick auf ", $aItem[1] & @CRLF & @CRLF & $aItem[2])
    EndIf
    Next
    EndIf
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    mfg autoBert

  • Problem beim Speichern von Werten in eine .ini Datei

    • autoBert
    • 23. Juli 2012 um 13:37
    Zitat von x0r

    warum nicht so?:


    weil du eine Klammer im Slript vergessen hast.

  • Problem beim Speichern von Werten in eine .ini Datei

    • autoBert
    • 23. Juli 2012 um 03:41

    Hallo VreaG,

    herzloch willkommen im Forum. Der Fehler wird nicht von iniwrite verursacht sondern entseht dadurch dass die Varialen die ControlID eines /Edit-)Elementes enthalten und nicht den Inhalt des Controls. Du musst das Control zuerst mit GuiCtrlRead auslesen. Also so:

    [autoit]

    If $nMsg = $Speichern Then
    IniWrite("config.ini", "usual", "name", GUICtrlRead($datei))
    IniWrite("config.ini", "usual", "time", GUICtrlRead ($zeit))
    EndIf

    [/autoit]

    siehe dazu

    Zitat

    GUICtrlRead

    Liest den Status oder die Daten eines Controls
    Quelle: dt. Hilfe

    edit: Tipfehler im Skript korrigiert
    mfg autoBert

  • Warten auf ein Fenster das vielleicht nie kommt.

    • autoBert
    • 22. Juli 2012 um 21:43
    Zitat von Nice_2012

    Leider dauert es immer etwas bis meine Beiträge freigeschaltet werden.

    Das verwechselt du mit Tema freischalten, in einem Thema werden deine Folgebeiträge aer sofort angezeigt.

    Zitat von Nice_2012

    Leider dauert es Inzwischen habe ich einfach WinWait mit einer Zeitangabe versehen. Erscheint das Fenster1 also nicht innerhalb von 15 Sekunden , dann geht es weiter im Programm. Das funktioniert soweit ganz prima. Nur würde mich interessieren, was mir den Befehlen "WinActivate" und "ConsoleClick" passiert die direkt danach kommen. Ich konnte zwar nichts negatives feststellen, aber irgend etwas werde sich machen oder?

    die Lösung wurde schon gepostet:

    Zitat von BugFix

    Ganz einfach, du fragst den Rückgabewert ab (das Handle, des zu öffnenden Fensters, bei TimeOut ist das 0):

    [autoit]


    If Not WinWait("Fenster_X", "", $timeout) Then
    ;... das ging daneben
    Else
    ;... jetzt gehts weiter
    EndIf

    [/autoit]

    mfg autoBert

  • Encrypt Password

    • autoBert
    • 22. Juli 2012 um 21:29
    Zitat von Basti2022

    Aber wie ich einen Hash-Wert bde habe ich net richtig verstanden...

    einfach Zeilen 11 und 19 aukommentieren:

    [autoit]

    ;Zeile 18; Um die Hashwerte für das Array zu ermitteln, die folgenden Zeilen ausführen
    ; und dann den Wert aus der Zwischenablage unten beim Array einfügen
    #cs
    While True
    $sPass = InputBox('MD5-Hashwert ermitteln', 'Passwort eingeben', '', '', 400, 140)
    If @error Then Exit
    ClipPut(md5($sPass))
    MsgBox(0, 'MD5-Hashwert', 'Der Hashwert zu dem Passwort: ' & $sPass & @CRLF & 'befindet sich nun in der Zwischenablage!')
    WEnd
    ; wenn alle User/Hashwerte erstellt wurden, können die Zeilen 11-16 auskommentiert/gelöscht werden
    #ce

    [/autoit]
    Zitat von Basti2022

    Kannst du mir ein Beispiel Skripten, damit ich es vertehe?


    Das hat doch Pscar schon gemacht

    [autoit]

    ;Zeile 213 ff
    Func md5($sMessage)

    [/autoit]

    ein weiteres gibt es dazu in der Hilfe zu _Crypt_HashData,

    mfg autoBert

  • Wahrscheinlichkeit eines Ereignisses

    • autoBert
    • 22. Juli 2012 um 17:35
    Zitat von Krabat

    autoBert: deine funktion ist prima

    danke dafür ist deine deutlich schneller bei hohen Leveln (50 + 50) 10 mal so schnell. Die Werte von folgendem Testskript:

    Spoiler anzeigen
    [autoit]

    Global $iAngriff, $iAngriff2
    For $iMe = 1 To 50
    For $iEnemy = 1 To 50
    $iAngriff = 0
    $iAngriff2 = 0
    $iStart = TimerInit()
    For $i = 1 To 1000
    If _checkIt($iMe, $iEnemy) Then $iAngriff += 1
    Next
    $iDiff = TimerDiff($iStart)
    $iStart = TimerInit()
    For $i = 1 To 1000
    If _Wahrscheinlichkeit($iMe, $iEnemy) Then $iAngriff2 += 1
    Next
    $iDiff2 = TimerDiff($iStart)
    ConsoleWrite("Mein Level: " & $iMe & @TAB & "Gegner: " & $iEnemy & @TAB & "CheckIt: " & $iAngriff & " / " & $iDiff & @TAB & @TAB & "Warscheinlichkeit: " & $iAngriff2 & " / " & $iDiff2 & @CRLF)
    Next
    Next

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

    Func _checkIt($iMe, $iEnemy)
    Local $aCheck[$iMe + $iEnemy + 1]
    $aCheck[0] = $iMe + $iEnemy
    For $i = 1 To $iMe
    $aCheck[$i] = 0
    Next
    For $i = $iMe + 1 To $aCheck[0]
    $aCheck[$i] = 1
    Next
    $i = $aCheck[Random(1, $aCheck[0], 1)]
    Return $i
    EndFunc ;==>_checkIt

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

    Func _Wahrscheinlichkeit($iLevel, $iTierLevel)
    If (Sqrt(Random() ^ 2 / Random() ^ 2) * $iLevel) < (Sqrt(Random() ^ 2 / Random() ^ 2) * $iTierLevel) Then Return True
    Return False
    EndFunc ;==>_Wahrscheinlichkeit

    [/autoit]

    zeigen dass die Tendenz zum Angriff bei beiden ~ gleich ist. Um es exakter zu vergleichen müsste man die Anzahl der Aufrufe deutlich erhöhen, dies will ich aber meinem schwachen Netbook nicht antun,

    mfg autoBert

  • Encrypt Password

    • autoBert
    • 22. Juli 2012 um 15:27

    Hallo Basti2022,

    wenn du es für ein Loginsystem machen willst soeichere einen Hash (evtl. gesalzen) des Passworts. Der Benutzer git sein Passwortwort ein, daraus bildest du nach dem gleichen Verfahren einen Hash, Die beiden Hashes vergleichst du. Sind sie gleich dann erhält derBenutzer Zugang, ansonsten vereigerst du diesen. Schau dir dazu LogIn-Box von Oscar an,

    mfg autoBert

  • Wahrscheinlichkeit eines Ereignisses

    • autoBert
    • 21. Juli 2012 um 23:42

    Ich würde es so lösen:

    Spoiler anzeigen
    [autoit]

    While 1
    $sMyLevel = InputBox("Level" ,"Gib deinen Level ein")
    If @error Then Exit
    $sEnemyLevel = InputBox("Level" ,"Gib den Level deines Gegners ein")
    If @error Then Exit
    if _checkIt(Int($sMyLevel),Int($sEnemyLevel)) Then
    $sMsg = "Angriff"
    Else
    $sMsg = "Glück gehabt"
    EndIf
    ConsoleWrite("Mein Level: " & $sMyLevel &@TAB & "Gegner: " & $sEnemyLevel & @TAB & $sMsg&@CRLF)
    WEnd

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

    Func _checkIt($iMe,$iEnemy)
    Local $aCheck[$iMe+$iEnemy+1]
    $aCheck[0] =$iMe+$iEnemy
    for $i = 1 to $iMe
    $aCheck[$i] = 0
    Next
    for $i = $iMe + 1 to $aCheck[0]
    $aCheck[$i] = 1
    Next
    $i = $aCheck[Random(1,$aCheck[0],1)]
    Return $i
    EndFunc

    [/autoit]

    wenn es zu oft zum Angriff kommt kannst du dem eigenen Level notfalls einen kleinen Bonus auf addieren,

    mfg autoBert

  • LogFiles und mehr

    • autoBert
    • 21. Juli 2012 um 11:47
    Zitat von Nice_2012

    Gibt es eine Art Logfile in dem ich nachschauen kann, auf was das Script jetzt wartet


    Schreibst du den eines?

    mfg autoBert

  • Eigenschaften einer Gui

    • autoBert
    • 21. Juli 2012 um 11:34
    Zitat von nick stamper

    erstens verschwindet dadurch das Rahmenlose, also der Rahmen der TestGui ist jetzt da, weil $WS_POPUP ja fehlt,


    war in dem Skriptschnipselvon dir auch nicht:

    Zitat von nick stamper

    $WS_EX_TRANSPARENT funktioniert gar nicht. Versteh nicht mal warum !?

    $gui = GUICreate("TestGui", 200, 350, 200, 100, $WS_EX_TRANSPARENT)


    und hier war der Parameter definitv an der falschen Stelle. Ich hatte damals nur diesen Beitrag gelesen und entsprechend korrigiert. Du musst die GUI mit dem ExStyle $WS_EX_TOPMOST erstellen und zusätlich noch

    [autoit]

    WinSetOnTop

    [/autoit]

    verwenden.

    mfg autoBert

  • PDF Datei nach Wort durchsuchen und dieses dann als Dateiname verwenden und die Datei umbenennen.

    • autoBert
    • 20. Juli 2012 um 19:29

    ersetze

    [autoit]

    ClipPut($Cmd)

    [/autoit]

    mit

    [autoit]

    ClipPut($sCmd)

    [/autoit]

    mfg autoBert

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™