_ImageSearch() und 64 bit

  • Hi all,

    habe mir was kleines zusammen gebastelt, und zwar funktioniert (wie wir alle wissen) "_ImageSearch()" nicht unter 64bit, wenn ich jetzt aber eine separate Exe unter 32bit kompiliere die eine entsprechende Funktion enthält, dürfte das doch theoretisch funktionieren?

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_UseX64=n
    #include <imagesearch.au3>

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

    dim $x, $y, $res

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

    $img = $cmdline[1]
    $do = $cmdline[2]

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

    ;~ $img = "C:\Users\simon_xxx\Desktop\Auswertung\test.bmp"
    ;~ $do = "click"

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

    MsgBox(0,"",$img)
    MsgBox(0,"",$do)

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

    imgsearch($img,$do)

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

    func imgsearch($img, $do)
    $res = _imagesearch($img,1,$x,$y,0)

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

    if $res = 1 Then
    if $do = "click" Then MouseClick("left",$x,$y,1,0)
    if $do = "move" Then MouseMove($x,$y,0)
    EndIf

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

    EndFunc

    [/autoit]

    In der 64bit-Anwendung:

    Spoiler anzeigen
    [autoit]

    ShellExecute(@ScriptDir & "\imgsearch.exe","C:\Users\simon_xxx\Desktop\Auswertung\test.bmp move")

    [/autoit]

    Unkompiliert funktioniert alles, wenn ich es aber von einer 64bit-Anwendung aufrufe, bekomme ich nur die übergebenen Parameter angezeigt und es passiert nichts, nichtmal eine Fehlermeldung.

    Evtl wisst ihr was dazu?

    Gruß
    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.


  • habe mir was kleines zusammen gebastelt, und zwar funktioniert (wie wir alle wissen) "_ImageSearch()" nicht unter 64bit

    Nein wissen wir nicht, da es problemlos funktioniert. Gerade eben erst nochmal überprüft (Win 8 x64). Du musst schlicht wie schon geschrieben hast als x86 kompilierne und alles funktioniert.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • tja, unter win7 x64 funktionierts nicht, entweder gibts aus der funktion einen fehler, dass $result[0] kein array ist, oder es passiert gar nichts (dll auf 32bit kompiliert).

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • Sorry! Das mit "als 32bit kompilieren" hatte ich überlesen :love:

    Ich möchte es als 64bit haben, da in unserer Firma der Virenscanner rumspackt (unlösbares problem, laut admin gibts nämlich keins ;))

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • Kompiliere ohne Packer auf 32-Bit, wenn dann der Virenscanner anschlägt, schick mir bitte die Source und die kompilierte Datei mit der Version des Scanners, dann bekommen die Jungs von der Virenscan-Software wieder Post.
    IdR. wird es dann beim nächsten bis übernächsten Update keinen "Fehlalarm" mehr geben.

  • Hi Andy,

    danke für die Antwort, ist nett gemeint, allerdings meldet der Virenscanner kein Problem, er verhindert ab und zu die Ausführung der Datei (kompilieren dauert auch bestimmt 5 Minuten, beim Löschen verreckt die Explorer.exe :wacko: ). Irgendwann geht die schon auf, aber da hab ich den Prozess schon mit der Hand gelöst :D

    Kompiliere ich mein Programm auf 32Bit (oder führe es mit selbiger Option nur aus (F5)), passiert irgendein seltsamer Fehler beim Auslesen diverser Dateien, drum wollte ich nur ImageSearch() in eine separate exe auslagern und bei Bedarf ausführen, aber wie gesagt funktioniert hier nur die Befehlsübergabe, die eigentliche Ausführung aber nicht.

    => Soviel zum Stand von heute morgen ^^

    Hatte ein wenig später ImageSearch() einfach durch Pixelsearch() ersetzt, ist zwar nicht unbedingt optimal, aber eine vorübergehende Notlösung.

    Kurz:
    Läuft das Programm? -> Ja!
    Ist das Problem behoben? -> Nein!

    Hoffe das ist nun etwas deutlicher verfasst 8)

    Gruß
    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • gibts niemanden, der mir sagen kann, warum die 32bit Anwendung gestartet mit Parametern von der 64bit Anwendung aus nicht ordentlich ausgeführt wird?!

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.