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

Beiträge von reeky

  • Standard-Datei-Öffnen-Dialoge steuern

    • reeky
    • 3. Oktober 2013 um 17:09

    ---

  • Standard-Datei-Öffnen-Dialoge steuern

    • reeky
    • 3. Oktober 2013 um 11:10

    ---

  • Bash Zitate

    • reeky
    • 8. August 2013 um 14:19

    OK, hast du schon einen Server, welcher dir regelmäßig neue Zitate liefern kann?

  • Bash Zitate

    • reeky
    • 8. August 2013 um 13:28

    Wie meinst du das genau?

    Variante 1:
    Sollen die Zitate von einem Server abgerufen werden, welcher bereits eine Sammlung von Zitaten zur verfügung stellt?

    Variante 2:
    Oder willst du eine kleine Datenbank (kann auch eine Textdatei sein) auf deinen Webserver speichern und dann soll ein Script automatisch immer 5 zufällige Zitate auswählen?

    Erkläre das bitte noch etwas genauer.

  • frage zu ping- shutdown

    • reeky
    • 8. August 2013 um 12:58

    Ich weiß jetzt nicht genau, wo es bei dir noch genau hängt.
    Ich habe dir deshalb mal deinen Code ein wenig kommentiert, vielleicht verstehst du ihn dann besser.

    Spoiler anzeigen
    [autoit]

    Global $aIP[11=["192.168.2.100","192.168.2.101","192.168.2.103","192.168.2.104","192.168.2.105","192.168.2.106","192.168.2.107","192.168.2.108","192.168.2.109","192.168.2.110"]
    Global $bAwake = True
    While 1
    Sleep (60000)
    for $i = 0 to ubound($aIP)-1 ; Durchlaufen aller Ips
    $bAwake = False
    if ping($aIP[$i]) > 0 then ; IP ist vorhanden
    $bAwake = True
    Sleep (60000)
    ExitLoop ; verlassen der for-Schleife
    EndIf
    next

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

    if $bAwake = False then
    Sleep(60000)
    ShellExecute ("restart twonky server.exe") ; Stimmt dieser Pfad?
    Sleep (3000)
    Shutdown(64); nach dem Aufwachen oder bei erfolgreichen Pings erstmal schlafen, bevor wieder geprüft wird, das lässt dir Zeit das Script zu beenden, sofern notwendig
    EndIf
    WEnd

    [/autoit]

    Wenn du noch ne Frage hast dann schieß einfach los, jeder braucht schließlich seine eigene Zeit um eine Sache zu verstehen. ;)

  • _FFXPath funktioniert komischerweise nicht mehr

    • reeky
    • 8. August 2013 um 12:38

    Hallo,

    ich nutze häufig die FF-UDF von Thorsten Willert.
    Heute wollte ich mir wieder ein Script schreiben, wo ich die UDF verwende.
    Leider liefert mir der Script nicht das gewünschte Ergebnis.

    Könntet ihr bitte mal nachschaue, woran das liegen kann?

    Hier ist der Script (diese Seite ist im Browser bei mir geöffnet: http://ff-au3-example.thorsten-willert.de/ )

    Spoiler anzeigen
    [autoit]

    #Include <FFC.au3>
    #include <Array.au3>

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

    Opt("MustDeclareVars", 1)

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

    Global $sTest

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

    If _FFConnect() Then
    $sTest = _FFXPath("/html/body/table/tbody/tr[2]/td/h3",9)
    ConsoleWrite(@CRLF & "hier kommt ____" & $sTest & "______" & @CRLF)

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

    EndIf

    [/autoit]

    Hier ist dann der Consolentext:

    Spoiler anzeigen
    Code
    >Running:(3.3.8.1):C:\Program Files (x86)\AutoIt3\autoit3.exe "D:\Desktop\AutoIt v3 Script (neu).au3"    
    _FFConnect: OS:	WIN_7 WIN32_NT 7601 Service Pack 1
    _FFConnect: AutoIt:	3.3.8.1
    _FFConnect: FF.au3:	0.6.0.1b-3
    _FFConnect: IP:	127.0.0.1
    _FFConnect: Port:	4242
    _FFConnect: Delay: 	2ms
    _FFConnect: Socket: 	608
    _FFConnect: Browser:	Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0
    __FFSendJavaScripts: Sending functions to FireFox .......... done
    __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("/html/body/table/tbody/tr[2]/td/h3",FFau3.WCD,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue.9;}catch(e){'_FFXPath_Error: '+e;};
    __FFSend: ;
    __FFRecv: 
    
    
    hier kommt __________
    
    
    __FFWaitForRepl ==> Error return value: MozRepl ....>
    Alles anzeigen

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Ich habe gerade meinen Fehler selbst gefunden.
    Die Funktion _FFXPath verlangt 3 Parameter, ich habe den 2. ausgelassen und somit hat die Funktion die falschen Werte geliefert.

  • _ScreenCapture_Capture verursacht Fehler

    • reeky
    • 31. Mai 2013 um 01:33

    Hallo,

    ich hab jetzt alles zum laufen bekommen.

    Diesen Part habe ich ersetzt und somit werden die Werte automatisch zugeordnet:

    [autoit]

    $arrItemCoords[0] = $iEdgeX + _Min(Number($arrCsvItems[$i][2]), Number($arrCsvItems[$i][0]))
    $arrItemCoords[2] = $iEdgeX + _Max(Number($arrCsvItems[$i][2]), Number($arrCsvItems[$i][0]))
    $arrItemCoords[1] = $iEdgeY + _Min(Number($arrCsvItems[$i][1]), Number($arrCsvItems[$i][3]))
    $arrItemCoords[3] = $iEdgeY + _Max(Number($arrCsvItems[$i][1]), Number($arrCsvItems[$i][3]))

    [/autoit]
  • _ScreenCapture_Capture verursacht Fehler

    • reeky
    • 31. Mai 2013 um 00:24

    Danke für die schnelle Antwort.
    Stimmt, das ist mir gar nicht aufgefallen. Ich werde das mal schnell abändern und, den Code posten, falls alles klappt.

  • _ScreenCapture_Capture verursacht Fehler

    • reeky
    • 30. Mai 2013 um 22:48

    Hallo,

    ich verwende eine Schleife um mehrere Screenshots von verschiedenen Bildbereichen zu erstellen.
    Wenn ich ca. 20 Screenshots erstelle, dann werden jedoch nicht alle Screenshots erstellt.
    Ich habe schon herausgefunden, dass die Funktion _ScreenCapture_Capture einen Fehler verursacht.

    Hier habe ich mal den relevanten Code-Auszug:

    Spoiler anzeigen
    [autoit]

    For $i = 0 To (UBound($arrCsvItems)-1)

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

    ; Festlegen der Eckpunkte (sortiert)
    If $arrCsvItems[$i][0] > $arrCsvItems[$i][2] Then
    $arrItemCoords[0] = $iEdgeX + $arrCsvItems[$i][2]
    $arrItemCoords[2] = $iEdgeX + $arrCsvItems[$i][0]
    Else
    $arrItemCoords[0] = $iEdgeX + $arrCsvItems[$i][0]
    $arrItemCoords[2] = $iEdgeX + $arrCsvItems[$i][2]
    EndIf
    If $arrCsvItems[$i][1] > $arrCsvItems[$i][3] Then
    $arrItemCoords[1] = $iEdgeY + $arrCsvItems[$i][3]
    $arrItemCoords[3] = $iEdgeY + $arrCsvItems[$i][1]
    Else
    $arrItemCoords[1] = $iEdgeY + $arrCsvItems[$i][1]
    $arrItemCoords[3] = $iEdgeY + $arrCsvItems[$i][3]
    EndIf

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

    ; Debug
    ConsoleWrite($i & " " & $arrItemCoords[0] & ";" & $arrItemCoords[1] & ";" & $arrItemCoords[2] & ";" & $arrItemCoords[3] & @CRLF)

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

    ; Screenshot 1
    _ScreenCapture_Capture(@ScriptDir & "\tmp\" & StringFormat("%02d", $i) & "_l.tif", _
    $arrItemCoords[0], $arrItemCoords[1], $arrItemCoords[2], $arrItemCoords[3], _
    False)
    If @error Then
    MsgBox(0,0,"Fehler bei Screenshot")
    ConsoleWrite("fehler "& $i & @CRLF)
    SetError(0)
    EndIf

    ; Screenshot 2
    _ScreenCapture_Capture(@ScriptDir & "\tmp\" & StringFormat("%02d", $i) & "_r.tif", _
    377+$arrItemCoords[0], $arrItemCoords[1], 377+$arrItemCoords[2], $arrItemCoords[3], _
    False)
    If @error Then
    MsgBox(0,0,"Fehler bei Screenshot")
    ConsoleWrite("fehler "& $i & @CRLF)
    SetError(0)
    EndIf


    Sleep(50)
    Next

    [/autoit]

    Ich habe auch schon versucht die Koordinaten zu sortieren. Dies habe ich getan, damit die Left- und die Top-Koordinate immer kleiner sind, als die Right- und Bottom-Koordinate. Leider hat dies den Fehler auch nicht vermieden.
    Ich habe auch schon mal probiert, ob es an dem Dateityp liegt. Sowohl bei Bmp als auch bi Tif treten Fehler auf.

    Hier habe ich mal ein paar Ergebnisse aus der Konsole:

    Spoiler anzeigen
    Code
    1 438;271;474;180
    fehler 1
    fehler 1
    2 495;282;559;206
    fehler 2
    fehler 2
    3 497;198;605;141
    fehler 3
    fehler 3
    4 628;239;667;136
    fehler 4
    fehler 4
    5 573;247;619;331
    6 546;351;608;404
    7 611;350;638;435
    8 641;317;666;392
    9 585;439;665;509
    10 568;533;587;614
    11 592;547;630;612
    12 645;536;662;613
    13 530;423;578;524
    14 448;423;515;480
    15 419;521;472;601
    16 415;567;366;616
    fehler 16
    fehler 16
    17 346;551;302;613
    fehler 17
    fehler 17
    18 414;473;352;531
    fehler 18
    fehler 18
    19 300;372;353;430
    20 405;373;362;455
    fehler 20
    fehler 20
    21 340;356;305;223
    fehler 21
    fehler 21
    22 426;237;367;192
    fehler 22
    fehler 22
    23 410;245;350;306
    fehler 23
    fehler 23
    24 422;285;472;380
    25 493;342;536;400
    26 478;287;558;308
    27 485;542;540;609
    Alles anzeigen

    Habt ihr eine Ahnung, woran es liegen kann, dass nicht immer alle Screenshots erstellt werden?

  • Bildanalyse Software

    • reeky
    • 26. Mai 2013 um 13:28

    Dankeschön, so klappt es.

    Vielleicht schaffe ich es sogar noch ein Makro für diese Abfolge zu schreiben.

  • Bildanalyse Software

    • reeky
    • 26. Mai 2013 um 11:57

    ImageJ hatte ich auch schon gefunden und getestet.
    In dem Programm kann ich zwar Rechtecke ziehen und diese dann ausmessen lassen. Doch leider gibt es bei den Messergebnissen keine Koordinaten für das Rechteck.
    Es kann natürlich sein, dass ich diese Option nicht gefunden habe.
    @AspirinJunki: Kannst du mir sagen, wie ich an die Koordinaten der aufgezogenen Rechtecke heran komme?

  • Maus Kursor flackert in AutoIt

    • reeky
    • 26. Mai 2013 um 00:51

    Hallo,
    hast du schonmal probiert einfach ein sleep mit in die schleife einzubauen. Da es ja eine Endlosschleife ist, welche erst durch gewisse Aktionen in deinem Gui beendet wird, verbraucht sie Rechenleistung. Wenn du Sleep(100) am ende in die Schleife einbaust, dann könnte das Problem behoben werden.
    Was vielleicht auch hilft, wenn du mit älteren Autoit-versionen testest.

  • Bildanalyse Software

    • reeky
    • 26. Mai 2013 um 00:41

    Hallo,
    Bilder möchte ich nicht weitergeben, da ich keine Berechtigung dazu habe.
    Ich möchte ja nicht 2 Bildbereiche miteinander vergleichen. Ich möchte nur vergleichen, ob die Prüfsumme, welche ich in der csv-Datei hinterlegt habe, mit der auf den screen übereinstimmt.
    Aber eigentlich geht es mir mehr um die Software, womit ich eine Bilddatei öffnen kann und anschließend ausmessen.
    Ich benötige so ein Programm öfters mal, wenn ich z.b. keine Controls auslesen kann, dann erstelle ich einen Screenshot und anschließend entnehme ich mir die Koordinaten aus dem Screenshot.

  • Bildanalyse Software

    • reeky
    • 25. Mai 2013 um 19:54

    Ich möchte ermitteln, ob ein gewisser Bildbereich eine bestimmte Pixel-CheckSum besitzt. Wenn ja, dann sollen weitere Aktionen ausgeführt werden.

    Die Bildbereiche möchte ich vorher in eine csv-Datei schreiben. Darin soll dann die CheckSum drin stehen und die 4 Koordinaten des Rechtecks.
    Mithilfe eines Arrays möchte ich dann alle Bildbereiche prüfen und mit der CheckSum aus der csv-Datei vergleichen. Wenn die Prüfsumme dann abweicht, dann werden die weiteren Aktionen ausgeführt.

    Hierfür brauche ich das Bildanalyse-Programm, womit ich die Koordinaten ermitteln kann. Derzeit verwende ich ein Programm, jedoch ist dies nur eine Testversion und es funktioniert nicht so, wie ich mir das vorstelle. Es heißt DatInf Measure und hat die Nachteile, dass ich erstens die Daten in der Testversion nicht exportieren kann und zum anderen werden die Pixel mit Nachkommastellen angezeigt.

  • Bildanalyse Software

    • reeky
    • 25. Mai 2013 um 19:20

    Hallo,

    ich scripte recht häufig mit AutoIT und nutze oft die grafischen Analysefunktionen. Hierfür erstelle ich meistens Screenshots und analysiere diese dann mit Paint. Leider ist es oft sehr umständlich, wenn ich mehre Bereiche in dem Bild messen will.

    Ich bin daher auf der Suche nach einem Programm, womit ich die erstellen Screenshots analysieren kann.
    Folgendes sollte das Programm in etwa erfüllen:

    • öffnen von Bilddateien
    • ziehen von Rechtecken
    • Anzeige von Koordinaten in einer Liste
    • export der Liste in csv-Datei oder ähnliches


    Wenn ihr ein Programm kennt, was mehr kann, dann ist das auch ok.
    Es kann englisch oder deutsch sein, sollte jedoch kostenlos sein.

    Kennt jemand ein solches Programm?

  • Programm per Commandline ausführen

    • reeky
    • 3. Februar 2013 um 14:01

    Hallo,

    ich möchte ein Programm über die DOS-Kommandozeile ausführen. Im Anschluss will ich die Ergebnisse auslesen.
    Hier ist mein Code:

    [autoit]

    $iReturn = Run(@COMSPEC & ' /c Start "C:\Program Files (x86)\neeviaPDF.com\PDFtoolbox\cmdLine\CLcompr.exe" "' & $sAusgabeDatei & '" -ci jpx -cq 60 -gi jpx -gq 60 -mi jbig2 -mq 1')
    While 1
    $sMeldungen &= StdoutRead($iReturn)
    If @error Then ExitLoop
    Wend
    ConsoleWrite(@CRLF & $sMeldungen & @CRLF)

    [/autoit]


    Leider klappt das nicht so ganz. Der öffnet mir immer die Ausgabedatei im PDF-Reader (da diese eine PDF ist).

    Wie kann ich das machen, dass ich das Programm mit Parametern ausführen kann und dann die Meldungen lesen kann?

  • GUI updaten - Team To Do Liste

    • reeky
    • 30. Januar 2013 um 10:44

    Hallo,

    pack bitte erstmal deinen Code in einen Spoiler, damit die anderen User nicht immer soweit runterscrollen müssen.

    Also ich würde es so verkürzen, dass du für Quellcode, welchen du immer wieder einsetzt einfach eine separate Funktion mit Parametern schreibst.
    Hier habe ich mal die Checkbox-Abfragen kurz in eine Funktion gepackt.

    Spoiler anzeigen
    [autoit]


    ; Beispiel: anstelle von Checkbox3() kannst du nun das schreiben
    CheckboxAbfrage($Checkbox3, $Label3, "$Checkbox3User", $Checkbox3, 3)

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

    Func CheckboxAbfrage($varCheckbox, $varLabel, $sCheckboxUser, $sCheckboxName, $iAufgabenNr)
    if BitAnd(GUICtrlRead($varCheckbox),$GUI_CHECKED) = $GUI_CHECKED then

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

    IniWrite (@ScriptDir & "\db.activity","active","1","1")

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

    GUICtrlSetBkColor($varCheckbox, 0x00FF00)
    _FileWriteLog ($logpath, " * " & $Userdone & " * erledigte Aufgabe 3")
    GUICtrlSetData ($varLabel, $Userdone)
    IniWrite($Dataini, 'GUI Update Box', '$sCheckboxName', "1")
    IniWrite($Dataini, 'GUI Update User', '$sCheckboxUser', $Userdone)

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

    sleep(2)
    FileDelete (@ScriptDir & "\db.activity")

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

    EndIf

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

    if BitAnd(GUICtrlRead($varCheckbox),$GUI_UNCHECKED) = $GUI_UNCHECKED then

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

    IniWrite (@ScriptDir & "\db.activity","active","1","1")

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

    GUICtrlSetBkColor($varCheckbox, 0xFF0000)
    _FileWriteLog ($logpath, " * " & $Userdone & " * hat Aufgabe 3 reaktiviert")
    GUICtrlSetData ($varLabel, "")
    IniWrite($Dataini, 'GUI Update Box', '$sCheckboxName', "0")
    IniWrite($Dataini, 'GUI Update User', '$sCheckboxUser', $Userdone)

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

    sleep(2)
    FileDelete (@ScriptDir & "\db.activity")

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

    EndIf
    EndFunc

    [/autoit]

    Noch besser wäre es, wenn du deine Checkboxen und Labels usw. einfach in einem Array speicherst. Damit hast du dann auf alle Fälle die Möglichkeit Schleifen zu durchlaufen.
    Anstelle von:

    [autoit]

    Global $Label3 = GUICtrlCreateLabel("", 248, 174, 38, 38)

    [/autoit]


    Könntest du dann einfach

    [autoit]

    $Labels[3] = GUICtrlCreateLabel("", 248, 174, 38, 38)

    [/autoit]


    verwenden. Vorher natürlich noch das Array deklarieren mit

    [autoit]

    Global $Labels[4]

    [/autoit]
  • FileOpen funktioniert nicht, wegen zu langem Pfad

    • reeky
    • 30. Januar 2013 um 10:07

    Ich bins nochmal.

    Ich habe ein wenige rumprobiert und dabei folgenden Code verwendet:

    [autoit]

    $sSpeicherpfad = "C:\dies wird ein langer pfad werden\jetzt ist er zwar nich nicht so lang, aber in ein paar sekunden wird er gewachsen sein\was sollte man sonst noch darin speicher\ausser den langen namen natürlich\eines tages näherte sich der lange name dem end12"

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

    If DirCreate($sSpeicherpfad) = 0 Then
    MsgBox(64, "Fehler", "Das Erstellen des Verzeichnisses war nicht möglich." & @CRLF & $sSpeicherpfad)
    Exit
    EndIf

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

    ; Titelinformation in separater textdatei speichern
    $fileHandle = FileOpen($sSpeicherpfad & "\12345678910", 1)
    If $fileHandle = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    Else
    FileWriteLine($fileHandle, "Ich bin keine Schreibmaschine")
    FileClose($fileHandle)
    EndIf

    [/autoit]

    Hierbei habe ich mich langsam von einem langen String zu einen immer kürzeren rangetastet. Dabei musste ich feststellen, dass die maximal erlaubte Pfadlänge bei der Funktion DirCreate() gleich 247 entspricht. Die Länge des Dateinamens funktionierte mit einer Länge von bis zu 11 Zeichen (+1 Zeichen -> Backslash). Insgesamt konnte ich bei FileOpen() also eine Pfadlänge inkl. Dateinamen von 259 Zeichen verwenden, ohne dass es zu Problemen bei der Ausführung kam.

    Ich werde meinen Hauptscript mal umschreiben und dann nochmal berichten, ob es daran lag.
    Danke Oscar für deine Hilfe, ich wäre sonst nicht darauf gekommen. :rock:

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    So hat alles geklappt und ich bin super Zufrieden ! :D

  • FileOpen funktioniert nicht, wegen zu langem Pfad

    • reeky
    • 30. Januar 2013 um 09:32

    Das ist doch aber irrsinnig. Wenn es Windows ermöglicht einen Ordner alleine schon 244 Zeichen zu geben, dann kann doch die Länge des Pfades nicht auf 255 begrenzt sein. Dann könnte ja bei 2 Ordnern schon Schluss sein.
    Ich werde trotzdem mal versuchen, ob es mit kürzeren Dateienamen auch Probleme gibt.

  • FileOpen funktioniert nicht, wegen zu langem Pfad

    • reeky
    • 30. Januar 2013 um 09:10

    Hallo zusammen,

    Zitat von autoBert

    Es gibt auch darstellbare Zeichen die in Datei- und Ordnernamen nicht vorkommen dürfen.


    Diese habe ich bereits rausgefiltert. Siehe den 1. Spoiler (oben).

    Zitat von Oscar

    Dein gesamter Pfad besitzt bereits 244 Zeichen. Plus die Zeichen vom Dateinamen bist Du bei 266 Zeichen und das sind zu viele (mehr als 255).
    Du musst also dafür sorgen, dass der Pfad plus Dateiname immer kleiner als 256 Zeichen bleibt.


    Ich habe bereits eine Überprüfung auf die Länge des Ordnernamens drin. Dabei lasse ich nur Ordnernamen zu, welche einen Dateinamen kürzer als 244 Zeichen besitzen. (habe mal getestet unter win7 64bit und die max Länge was er zugelassen hat waren 244 Zeichen)
    Die 255 Zeichen sind doch für den jeweiligen Ordnernamen dachte ich und nicht für die Gesamtlänge des Pfades, oder?

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™