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. Bring the House Down

Beiträge von Bring the House Down

  • Einfache ImageSearch Lösung für x64 System

    • Bring the House Down
    • 3. Februar 2015 um 17:50

    Danke,

    magst du mir kurz sagen wie ich das WorkingDir entsprechend setze ? das habe ich bislang nie machen müssen.

    Edit:

    [autoit]

    FileChangeDir(@ScriptDir)

    [/autoit]


    Hat anscheinend geholfen. Ich teste mal weiter

    Edit2:
    Also Danke noch mal an euch beiden das hat super geklappt.
    Eine Sache noch, leider habe ich weiterhin Probleme das Skript vom Netzwerk Share aufzumachen.
    Ich denke der Fehler liegt auch an dem Working dir, habe aber noch nicht ganz verstanden wohin ich das am besten biegen soll ?

    Edit3:
    Also wenn ich das Skript als EXE (64 Bit) Kompiliere geht es wenn ich

    [autoit]

    FileChangeDir(@ScriptDir)

    [/autoit]


    Direkt nach dem öffnen des CSV einsetze und die exe vom Netzwerk Share starte.
    Bin etwas verwirrt.

    Ich glaube ich muss noch viel lernen :(

  • Einfache ImageSearch Lösung für x64 System

    • Bring the House Down
    • 3. Februar 2015 um 17:13

    Schade, ich dank dir aber auf jeden Fall für die Mühen.
    Das Skript läuft im Moment sehr Erfolgreich, von daher kann man das hier auf Erledigt stellen.
    Ich werd an die csv vielleicht noch mal mit einem HEX viewer ran gehen oder so, sonst bin ich auch ratlos.

    Dennoch bin ich interessiert was für Möglichkeiten ich sonst noch habe, da die Umgebung hier recht limitiert ist.

    Edit:

    Ich konnte den Fehler noch etwas eingrenzen. Meine CSV Dateien funktionieren auch wenn Sie im skriptordner liegen. Außerhalb des Skriptordners bekomme ich den Fehler (deine CSV hört außerhalb des Skriptordners auch auf zu funktionieren).. hmmm

  • Einfache ImageSearch Lösung für x64 System

    • Bring the House Down
    • 3. Februar 2015 um 11:51

    Hi :)

    Ja wir reden noch über den Fehler. Eigentlich hatte ich den Syntax per Tidy schon aufgeräumt. Kann aber sein das, durch das viele Probieren, ich wieder die Orginaldatei angehangen habe.

    Ich konnte den Fehler eingrenzen. Es scheint an der CSV zu liegen, sobald ich meine Daten in deine CSV kopiere funktioniert das Skript. Nutze ich eine von meinen CSV geht es nicht.
    Meine CSV sind mit Excel 2010 erstellt. Aber auch wenn ich mit Windows 7 x64 Home Premium eine txt erstelle und die dann als CSV umbenenne geht es nicht.
    Ich habe eine mit Excel 2013 erstellt CSV versucht, aber habe das selbe Ergebnis.
    Wie hast du die CSV erstellt ?

    Ich habe mal meine CSV Abgehangen, gehen die bei dir ?

  • Einfache ImageSearch Lösung für x64 System

    • Bring the House Down
    • 2. Februar 2015 um 12:00

    Danke, aber leider hab ich damit auch kein Erfolg.

    Ich habe die zeile mal in das test Skript eingefügt aber leider läuft das bei mir noch immer auf Fehler.

    Ich sehe im Taskmanager das die AutoIt3_x64.exe (im 64 bit Modus) gestartet wird, egal ob ich Y oder N zu dem Befehle sage.
    Daher kann man eigentlich davon ausgehen das mein Skript auf jedenfall immer in 64 Bit läuft.

    Im Anhang das selbe Skript noch mal nur mit der Zeile. Ist das zu 100% mit deinem Skript identisch ?

  • Einfache ImageSearch Lösung für x64 System

    • Bring the House Down
    • 30. Januar 2015 um 14:42

    Scheint wohl nicht so trivial zu sein ?

    Vielleicht machen wir es anders...

    Könnt ihr mir ein Beispiel Code nennen, mit dem ich ein Menü bekomme, von dem aus ich die CSV auswählen kann ?
    So das ich den Pfad nicht hart in das Skript mit einfügen muss.

  • Einfache ImageSearch Lösung für x64 System

    • Bring the House Down
    • 27. Januar 2015 um 13:18

    Ich habe mal ein ZIP Erstellt mit den Dateien, das Skript habe ich aber verkürzt, da ich mit Pixelsearch arbeite und wenn du die Button oder Symbole nicht hast auf die ich Ziele wird es schwer das nachzubauen.

    Das angehangene au3 ist simpel. F4 Drücken und eine Datei (CSV) wählen, danach stürzt er bei mir direkt ab weil ich die Imagesearch eingebaut habe.

    Edit:

    Windows 7 x64 Home Premium (Laptop)
    Windows 7 x64 Enterprise (Desktop)

    Das Problem ist auf allen Rechnern gleich.

  • Einfache ImageSearch Lösung für x64 System

    • Bring the House Down
    • 27. Januar 2015 um 09:30

    Ich hab mal die Test Funktionen raus genommen.

    Bitte auch um Verbesserungsvorschläge für andere Fehler ;)

    Ich habe gerade Zeile 25 Einfach durch:

    Local Const $vFilePath = "c:\Users\User\Desktop\Book1.csv"

    ersetzt und jetzt läuft das Skript fehlerfrei (naja gibt immer was zu verbessern ;) ) durch.

    Aber hier mal das unmodifizierte Skript

    [autoit]

    Opt("WinTitleMatchMode", 2)

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

    HotKeySet("{F4}", "Go")
    HotKeySet("{F5}", "Stop")
    HotKeySet("{F6}", "Pause")
    HotKeySet("{F7}", "End")
    HotKeySet("{F8}", "Test")

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

    Global $fPaused = False
    Local $vEnd = 0
    Local $x = 0
    Local $y = 0

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

    #include <MsgBoxConstants.au3>
    #include <FileConstants.au3>
    #include <File.au3>
    #include <ImageSearch.au3>

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

    While 1
    Sleep(500)
    WEnd

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

    Func Go() ; Runs when you press F4

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

    Local Const $vFilePath = FileOpenDialog("Choose CSV File", @DesktopDir & "\Lists", "CSV Files (*.csv)", "", "01-temp.csv", "")
    If @error Or Not FileExists($vFilePath) Then
    MsgBox($MB_SYSTEMMODAL, "", "An error occurred when reading the file." & @CRLF & "Closing Programm")
    Sleep(500)
    Exit
    EndIf
    Local $vFileOpen = FileOpen($vFilePath, $FO_READ)
    If $vFileOpen = -1 Then
    MsgBox($MB_SYSTEMMODAL, "", "An error occurred when reading the file.")
    Return False
    EndIf

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

    WinActivate("Remote", "") ; Window Focus to SM9
    WinWaitActive("Remote", "")
    Sleep(750)
    MouseClick("primary", 368, 96, 1) ; Click search field in SM9
    Sleep(1500)

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

    For $n = 2 To 9999 ; run loop to finish all rows

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

    Local $vLine = FileReadLine($vFileOpen, $n) ;read line into variable
    If $vLine = "" Then
    MsgBox($MB_SYSTEMMODAL, "", "End of File !")
    Sleep(500)
    Exit
    EndIf

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

    If StringLen($vLine) > 3 Then ; Check if Line is Empty (for loopting trough the doc)

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

    Local $vValue = StringSplit($vLine, ",") ; Split the string using the delimiter "," and the default flag value.

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

    If $vValue[1] = "" Then ; This check is to ensure $vLine does not just consists of ",,,,,,,,"
    MsgBox($MB_SYSTEMMODAL, "", "Done with List" & @CRLF & $vLine)
    Exit
    EndIf

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

    MouseClick("primary", 157, 381, 1) ; Click ref search field in SM9
    Sleep(500)
    Send("^a") ; Select the whole entry
    Sleep(250)
    Send($vValue[1], 1) ; Place Name into search
    Sleep(250)
    Send("{ENTER}")
    Sleep(1000)

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

    Local $vCoord = PixelSearch(364, 196, 364, 196, 0x4168AF) ; Check if the search came back with a result
    If Not @error Then

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

    MouseClick("primary", 439, 204, 2) ; open first entry
    Sleep(2500)

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

    MouseClick("primary", 65, 545, 1) ; Click External Resource in SM9
    Sleep(1500)

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

    MouseClick("primary", 384, 186, 1) ; Click 1st entry in SM9
    Sleep(2500)

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

    For $n2 = 1 To 10 ; Loop trough the list of linked items
    Local $search1 = _ImageSearch("./pix/adconfigimport.bmp", 1, $x, $y, 0) ;check if link is coming from AD
    If Not $search1 = 1 Then
    Sleep(1000)
    ;Local $search2 = _ImageSearch("./pix/unlink.bmp", 1, $x, $y, 0) ;check if link is coming from AD
    ;If $search2 = 1 Then
    ; MouseClick("primary", $x1, $y1, 1) ; unlink in SM9
    ; Sleep(750)
    ; MouseClick("primary", 384, 186, 1) ; Click 1st entry in SM9
    ; Sleep(1500)
    ;Else
    ; MsgBox($MB_SYSTEMMODAL, "!!Error!!", "Can't fine unlink Picture")
    ; Sleep(500)
    ; Exit
    ;EndIf
    Else

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

    Local $vCoord = PixelSearch(392, 203, 392, 203, 0xA7BDD2) ; Check if something is linked in the 2nd line
    If Not @error Then
    MouseClick("primary", 384, 203, 1) ; Click 2nd entry in SM9
    Sleep(1500)
    Else
    ExitLoop
    EndIf
    EndIf
    Next
    MouseClick("primary", 1269, 71, 1) ; close CI window in SM9
    Sleep(750)
    EndIf
    EndIf
    _FileWriteToLine($vFilePath, $n, " ", 1)
    Sleep(500)
    If $vEnd = 1 Then
    MouseClick("primary", 1268, 69, 1) ; Close CMDB Search
    Sleep(500)
    MsgBox($MB_SYSTEMMODAL, "Program Ended normally", "End initiated by you !")
    Sleep(1500)
    Exit
    EndIf
    Next
    EndFunc ;==>Go

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

    Func End()
    $vEnd = 1
    Sleep(250)
    EndFunc ;==>End

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

    Func Stop()
    While 1
    Exit
    WEnd
    EndFunc ;==>Stop

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

    Func Pause()
    $fPaused = Not $fPaused
    While $fPaused
    Sleep(250)
    ToolTip('Script is "Paused", press "F6" to continue', 0, 0)
    WEnd
    ToolTip("")
    EndFunc ;==>Pause

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Einfache ImageSearch Lösung für x64 System

    • Bring the House Down
    • 26. Januar 2015 um 15:40

    Ich habe herausgefunden, das meine Routine zum auswählen des CSV anscheinend mit ImageSearch kollidiert.
    Kann mir einer da nähere Infos geben ?

  • Einfache ImageSearch Lösung für x64 System

    • Bring the House Down
    • 26. Januar 2015 um 12:49

    @oernzz
    Also ich sehe zu deiner ImageSearch.au3 und der von autoitscript.com keinen unterschied. Ich habe es dennoch ausprobiert und bekomme unterstehenden Fehler trotzdem


    Irgendwie sträubt sich das ganze noch. Nicht weil die Bilder nicht gefunden werden, sondern die ImageSearch bricht in meinem Skript immer noch einfach mit dem "$result[0]" Fehler ab.
    Ich habe die reine Bildsuche oben in die Funktion Test geladen. Wenn ich die mit F8 starte läuft sie ohne Probleme durch. Der selbe Code aber weiter unten bricht mit dem $result[0] fehler ab :(

    Ich hab mal mein ganzes bisheriges Skript hier eingebracht. Vielleicht ja ja wer ne Idee ?


    Edit: Ich habe folgenden Part Identifiziert.
    Und zwar Zeile 26 - 36. durch diese Routine hängt sich imagesearch auf. Jemand eine Idee warum ?

    [autoit]

    Opt("WinTitleMatchMode", 2)

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

    HotKeySet("{F4}", "Go")
    HotKeySet("{F5}", "Stop")
    HotKeySet("{F6}", "Pause")
    HotKeySet("{F7}", "End")
    HotKeySet("{F8}", "Test")

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

    Global $fPaused = False
    Local $vEnd = 0
    Local $x = 0
    Local $y = 0

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

    #include <MsgBoxConstants.au3>
    #include <FileConstants.au3>
    #include <File.au3>
    #include <ImageSearch.au3>

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

    While 1
    Sleep(500)
    WEnd

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

    Func Go() ; Runs when you press F4

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

    Local Const $vFilePath = FileOpenDialog("Choose CSV File", @DesktopDir & "\Lists", "CSV Files (*.csv)", "", "01-temp.csv", "")
    If @error Or Not FileExists($vFilePath) Then
    MsgBox($MB_SYSTEMMODAL, "", "An error occurred when reading the file." & @CRLF & "Closing Programm")
    Sleep(500)
    Exit
    EndIf
    Local $vFileOpen = FileOpen($vFilePath, $FO_READ)
    If $vFileOpen = -1 Then
    MsgBox($MB_SYSTEMMODAL, "", "An error occurred when reading the file.")
    Return False
    EndIf

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Einfache ImageSearch Lösung für x64 System

    • Bring the House Down
    • 26. Januar 2015 um 10:00

    IEAttach funktioniert leider ebenfalls nur, wenn der IE lokal gestartet wird.
    Bei Citrix arbeitet man aber wie bei einem Remote Desktop. Das heißt wenn AutoIt nicht auf dem Remote System installiert ist, siehst du nur das Bild.
    Ich schätze mal das selbe Problem haben wohl die Bots, weshalb Imagesearch beliebt ist.

    Ich bastle gerade an dem Skipt und hab mir gerade wieder fast die Haare raufen können.
    Ich habe ein weiteres Problem gefunden. Liegt mein Skript auf einem Netzwerklaufwerk hat er wieder probleme mit der "$result[0]" Zeile in der ImageSearch.au3.
    Ich muss mal schauen ob ich das irgendwie gefixt bekomme, weil ich sehr ungern nur die Skripte wieder Lokal packen würde.

  • Einfache ImageSearch Lösung für x64 System

    • Bring the House Down
    • 24. Januar 2015 um 14:01

    Ok, danke, dann werde ich am Montag auf der Arbeit mal schauen.

    Ich erstelle mir aus den Scripten keine exe Dateien, da ich eh der einzige bin der die Sachen nutzt. Da reichen auch die au3 Dateien ;)

    Zudem basel ich jedesmal neue Routinen rein und erweitere so mein Wissensstand :)

    Meld mich Montag noch mal \\o//

  • Einfache ImageSearch Lösung für x64 System

    • Bring the House Down
    • 23. Januar 2015 um 19:58

    Hast du die ImageSearch.au3 angepasst oder 1zu1 nach "C:\Program Files (x86)\AutoIt3\Include" kopiert ?

    Bei der "Orginalen" bekomme ich auch zu Hause (gerade mal getestet) folgenden Fehler:

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    korriegiere ich das wie oben beschrieben kommt nur die Box mit nothing found.

    Ich verzweifel...


    Edit:

    F**k, ich weiß woran es liegt *haarerauf*
    Ist mir gerade erst wieder eingefallen als ich AutoIT neu installiert habe:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Hier habe ich aus kompatiblitätsgründen (wie da ja steht) x86 gewählt.
    Ich hab AutoIt neu installiert und x64 ausgewählt. Jetzt geht die Originale ImageSearch.au3 und dein Script lief sofort auf anhieb

    KAnnst du mir sagen was die umstellung für auswirkung auf meine bisherigen Skripte haben könnte ?

  • Einfache ImageSearch Lösung für x64 System

    • Bring the House Down
    • 23. Januar 2015 um 16:47

    Leider habe ich damit den selben Fehler wie zuvor.
    Ich verwende die 64Bit dll im Skriptordner und die ImageSearch.au3 habe ich in den Include Ordner kopiert.

    Ich habe mal den code von der Seite 1zu1 kopiert und mir ein kleines Bild vom Papierkorb gemacht (wollte erstmal lokal testen)


    [autoit]

    #include <ImageSearch.au3>

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

    ; #AutoIt3Wrapper_UseX64 = N <== Macht kein Unterschied ob mit oder ohne

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

    While 1
    Sleep(500)
    WEnd

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

    Func Test()
    Local $search = _ImageSearch("Untitled.bmp", 0, $x, $y, 0)
    If $search = 1 Then
    MouseMove($x, $y, 10)
    Else
    MsgBox($MB_SYSTEMMODAL, "", "Nothing Found")
    EndIf
    EndFunc ;==>Test

    [/autoit]

    Wenn ich das nun so laufen lasse gibt es als erstes ein Fehler aus der ImageSearch.au3

    $result[0] Mag er nicht.
    Dazu die Zeile aus der au3

    [autoit]

    ; If error exit
    if $result[0]="0" then return 0

    [/autoit]

    Ändere ich das nun ab auf:

    [autoit]

    ; If error exit
    if $result="0" then return 0

    [/autoit]

    kommen erstmal keine weiteren Fehler. Allerdings weiß ich nicht ob ich nicht auch Zeile 48 Anpassen sollte ?

    [autoit]

    $array = StringSplit($result[0],"|")

    [/autoit]

    Egal ob ich die 2. Zeile ändere oder nicht, ich bekomme immer die Box mit Nothing Found.
    Bin ratlos :(

  • Einfache ImageSearch Lösung für x64 System

    • Bring the House Down
    • 23. Januar 2015 um 16:00

    Ah Klasse, das Posting kanne ich noch nicht.

    Nein, ist wirklich kein Bot (würde sicherlich jeder sagen). Geht darum für mich auf der Arbeit Aufgaben zu Automatisieren.
    Wir haben ein Call logging Tool, welches ich bediene um Inventory daten zu verwalten. Da ich häufig Datensätze > 800 Objekte habe die ich "von Hand" anpassen muss, hab ich mir autoit näher angeschaut.
    Bislang habe ich die meißten Tasks abbilden können, ledeglich der eine hier sträubt sich noch, da der Button zum klicken je nach Name des DB eintrags an einer anderen Stellen steht.

    Beispiel

    Name 1 {Klickmich}
    Namederganzlangist 2 {Klickmich}

    UseX64 hatte ich auch versucht, das hatte aber keine Änderung gebracht. Ich schau mir das posting noch mal an und Bastle weiter und melde mich dann wenn ich noch schwierigkeiten habe.
    Danke erstmal !

  • Einfache ImageSearch Lösung für x64 System

    • Bring the House Down
    • 23. Januar 2015 um 15:16

    Hi, danke für die schnelle Hilfe.

    Das hätte ich vielleicht noch erwähnen sollen :D Ich arbeite hier ein einer Citrix Umgebung. Die Buttons die ich Klicken muss sind leider nicht per ControlClick erreichbar. Der komplette Control Tab ist bei dem Info Tool leider leer :(
    Das scheint normal bei XenApp Programmen, da man nur ein Fenster präsentiert bekommt und die Applikation leider nicht lokal installiert ist.

    Deshalb muss ich leider wohl doch auf die Bildsuche zurückgreifen, denke ich ?

    Edit, da das Programm selber ein ActiveX Modul (Schätze ich mal) im IE ist, kann ich selbst bei einer Lokalen Installation nur wenig auswählen

    Code
    >>>> Control <<<<
    Class:   Internet Explorer_Server
    Instance:           1
    ClassnameNN:  Internet Explorer_Server1
    Name:   
    Advanced (Class):         [CLASS:Internet Explorer_Server; INSTANCE:1]
    ID:        
    Text:     
    Position:           0, 101
    Size:     1280, 881
    ControlClick Coords:     447, 45
    Style:    0x56000000
    ExStyle:            0x00000000
    Handle: 0x000000000002058C
    Alles anzeigen
  • Einfache ImageSearch Lösung für x64 System

    • Bring the House Down
    • 23. Januar 2015 um 12:38

    Hallo :thumbup:

    Ich bastle seit einige Zeit Arbeitstechnisch an einem Script herum. Nun komme ich nicht umher an einer bestimmten stelle einen Button klicken zu müssen.
    Bislang wusste ich immer wie ich mir helfe, nun ist es aber so, dass der Button nicht immer an der selben Stelle steht.

    Durch Google habe ich ein ImageSearch.au3 gefunden (autoitscript.com) welches ich auch eingebunden habe, allerdings scheint das script für eine älter Autoit Version und nur für x86 Systeme geschrieben zu sein.
    Durch weiter suchen bin ich hier gelandet und hoffe ihr könnt mir Helfen.

    Aufgabe:

    Button finden und Anklicken.


    Derzeit habe ich folgenden Code benutzt:


    [autoit]


    #include <imagesearch.au3>
    HotKeySet("{F8}", "Test")
    Func Test()
    $vSearch = _ImageSearch("unlink.png", 1, $x, $y, 0)
    If $vSearch = 1 Then
    MouseMove($x, $y, 10)
    EndIf
    EndFunc

    [/autoit]

    Allerdings läuft das so überhaupt nicht. Es kann sein das ich die imagesearch Datei nicht richtig editiert habe, nicht sicher.


    Ich würde mich freuen wenn mir einer die richtigen Dateien für ein x64er System linken könnte und mir noch sagt wo die jeweils hin müssen.
    Auch wäre es nett mir etwaige Fehler in meinem Code Schnippel aufzuzeigen.

    Danke

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™