Doppelklick funktioniert nicht immer. warum?

  • Hallo an alle,

    ich heiße andré und befasse mich erst seit ein paar Tagen mit AutoIT. Jetzt habe ich mal ein bißchen ausprobiert und das meiste funktioniert auch ganz gut. Das Problem was ich habe ist das wenn ich den Befehl z.b

    Code
    MouseClick("left", 0, 500, 2)

    habe es mal geht und mal nicht.
    Mache ich irgendetwas falsch?
    Bin über ein paar Tipps dankbar.

    Grüße
    André

  • @make-grafik

    Überprüf doch nochmals ob du tatsächlich ein Klick an der Position:
    x - 0
    y - 500

    haben willst...

    genau deswegen steht ja bei mir z.b davor. Es geht nicht um diese Position es geht um irgendeine Position innerhalb des Scriptes.

    grüße

  • Klicks auf Koordinaten sind ohnehin ziemlich unbrauchbar, da abhängig von der Bildschirmauflösung und ggf. der Fensterposition in dem der Klick ausgeführt werden soll. Schau dir besser mal die control*-Funktionen an:

    [autoit]


    controlclick
    controlsend
    controlcommand
    controllistview

    [/autoit]

    Da dein Beispiel grundsätzlich funktioniert wäre ein konkreteres Beispiel in Form deines kompletten Scriptes sinnvoll. ;)

  • Hi,
    die Controll Funktionen habe ich mir schon angeschaut, aber muss ich mich erstmal einlesen wie das ganze so geht.
    hier mal mein Script.
    Kann man sicher besser lösen aber bin noch nicht solange dabei.
    Grüße
    André

    Spoiler anzeigen
  • Habe ich mir gerade mal angeschaut und mal geändert aber geht irgendwie nicht so wirklich.
    Habe mal das Beispielscript aus der Hilfe genommen und meine daten reingeschrieben. Ich glaube ich muss das erstmal alles verstehen lernen.

    Sieht dann so aus.

  • Hallo xeron71,
    dass Problem mit dem Doppelklick hatte ich auch mal.
    Anscheinend war AutoIt da wohl etwas zu schnell für das Programm, sodass es den Doppelkick nicht immer mitbekommen hat.
    Zur Lösung habe ich zwischen den beiden Mouseklicks eine kleine Pause einfügen müssen.
    Danach hat das Programm diese zwei Klicks immer als Doppelklick erkannt und richtig darauf reagiert.
    Also Anstelle von:

    [autoit]


    MouseClick("left", 0, 500, 2)

    [/autoit]


    so geschrieben:

    [autoit]


    MouseClick("left", 0, 500, 1)
    Sleep(100)
    MouseClick("left", 0, 500, 1)

    [/autoit]

    MfG
    BigRox

  • Da ist irrtümlich das fasche Beispiel (_FTP_FilePut) hier das Beispiel zu _FTP_FileGet:

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <FTPEx.au3>
    Opt('MustDeclareVars', 1)

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

    _example()

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

    Func _example()
    Local $s_ServerName = 'ftp.wortmann.de' ;dieser Server existiert nicht
    Local $s_Username = "meinuser"
    Local $s_Password = "meinpass"

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

    Local $s_LocalFile = @ScriptDir & "P:\preislisten\\JTL_WAWI.csv"
    Local $s_RemoteFile = "/Preislisten/JTL_WAWI.csv"
    Local $i_Passive = 0 ;aktive Verbindung nutzen wenn bei anderen Server Probleme dann auch mit 1 für passive Verbung testen

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

    Local $l_InternetSession, $l_FTPSession, $errOpen, $errFTP

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

    $l_InternetSession = _FTP_Open('AuoItZilla') ;Öffnet eine FTP Sitzung
    $errOpen = @error
    If Not @error Then
    $l_FTPSession = _FTP_Connect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_Passive) ;Verbindet zu einem FTP Server
    $errFTP = @error
    If Not @error Then
    If _FTP_FileGet($l_FTPSession, $s_RemoteFile, $s_LocalFile) Then
    ShellExecute($s_LocalFile)
    ConsoleWrite("Download: erfolgreich" & @CRLF)
    Else
    ConsoleWrite("Download: fehlgeschlagen " & " " & @error & @CRLF)
    EndIf
    Else
    MsgBox(0, "Connect", "fehlgeschlagen")
    ConsoleWrite("Connect: " & " " & $errFTP & @CRLF)
    EndIf
    Else
    MsgBox(0, "Open", "fehlgeschlagen")
    ConsoleWrite("Open " & " " & $errOpen & @CRLF)
    EndIf
    _FTP_Close($l_InternetSession) ;schliesst die FTP-Sitzng
    EndFunc ;==>_example

    [/autoit]

    mfg autoBert

  • autoBert
    das Script hatte ich auf der ander Seite schon gefunden wo Du es schon beschrieben hast. Jedoch passiert da beim aufrufen gar nichts.

    Edit: Jetzt geht es.
    Wo kann ich es abstellen das es nach dem runterladen Automatisch in Exel geöffnet wird?

    grüße
    Andre

    Einmal editiert, zuletzt von xeron71 (12. Dezember 2012 um 14:23)

  • Danke hat geklappt.
    kann man da auch irgendwie eine funktion machen das mehrere Dateien vom gleichen Server geladen werden und wenn die beendet sind einen anderen ftp Server antoßen und noch eine Liste laden oder muss ich hierfür 3 Scripte machen.

    Sorry für die viele fragerei aber ist alles noch Neuland.

    Grüße
    André

  • Das kannst du alles in ein Sript packen. Wenn deine 3 Dateien Lokal genauso heisen wie Remote und alle im gleichen Ordner gespeichert werden, sieht es so aus:

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <FTPEx.au3>
    Opt('MustDeclareVars', 1)

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

    _example()

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

    Func _example()
    Local $s_ServerName = 'ftp.wortmann.de' ;dieser Server existiert
    Local $s_Username = "meinuser"
    Local $s_Password = "meinpass"

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

    Local $s_LocalPath = @ScriptDir & "P:\preislisten\\"
    Local $s_RemotePath = "/Preislisten/"
    Local $aFiles[3] ;da in der Schleife zum Herunter laden UBound benutzt wird kann hier einfach das Array angepasst werden die Dateinamen müssen angegeb en werden, snst nichts
    $aFiles[0] = "JTL_WAWI.csv"
    $aFiles[1] = "JTL_WAWH.csv" ;Namen austauschen
    $aFiles[2] = "JTL_WAWO.csv" ;Namen austauschen

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

    Local $i_Passive = 0 ;aktive Verbindung nutzen wenn bei anderen Server Probleme dann auch mit 1 für passive Verbung testen

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

    Local $l_InternetSession, $l_FTPSession, $errOpen, $errFTP

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

    $l_InternetSession = _FTP_Open('AuoItZilla') ;Öffnet eine FTP Sitzung
    $errOpen = @error
    If Not @error Then
    $l_FTPSession = _FTP_Connect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_Passive) ;Verbindet zu einem FTP Server
    $errFTP = @error
    If Not @error Then
    For $i = 0 To UBound($aFiles) - 1
    If _FTP_FileGet($l_FTPSession, $s_RemotePath & $aFiles[$i], $s_LocalPath & $aFiles[$i]) Then
    ;ShellExecute($s_LocalPath)
    ConsoleWrite("Download: " & $aFiles[$i] & " erfolgreich" & @CRLF)
    Else
    ConsoleWrite("Download: " & $aFiles[$i] & " fehlgeschlagen " & " " & @error & @CRLF)
    EndIf
    Next
    Else
    MsgBox(0, "Connect", "fehlgeschlagen")
    ConsoleWrite("Connect: " & " " & $errFTP & @CRLF)
    EndIf
    Else
    MsgBox(0, "Open", "fehlgeschlagen")
    ConsoleWrite("Open " & " " & $errOpen & @CRLF)
    EndIf
    _FTP_Close($l_InternetSession) ;schliesst die FTP-Sitzng
    ;ab hier kannst du den Skriptcode für den nächsten Server anhängen
    $s_ServerName = 'ftp.wortmann2.de' ;< ======= anpassen
    $s_Username = "meinuser"
    $s_Password = "meinpass"

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

    $s_LocalPath = @ScriptDir & "P:\preislisten2\\" ;< ======= anpassen
    $s_RemotePath = "/Preislisten/" ;< ======= anpassen
    ;Local $aFiles[3] ;evt. mit Redim neue Arraygrösse festlegen
    $aFiles[0] = "JTL_WAWI.csv" ;< ======= anpassen
    $aFiles[1] = "JTL_WAWH.csv" ;< ======= anpassen
    $aFiles[2] = "JTL_WAWO.csv" ;< ======= anpassen

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

    ;$i_Passive = 0 ;aktive Verbindung nutzen wenn bei anderen Server Probleme dann auch mit 1 für passive Verbung testen

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

    $l_InternetSession = _FTP_Open('AuoItZilla') ;Öffnet eine FTP Sitzung
    $errOpen = @error
    If Not @error Then
    $l_FTPSession = _FTP_Connect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_Passive) ;Verbindet zu einem FTP Server
    $errFTP = @error
    If Not @error Then
    For $i = 0 To UBound($aFiles) - 1
    If _FTP_FileGet($l_FTPSession, $s_RemotePath & $aFiles[$i], $s_LocalPath & $aFiles[$i]) Then
    ;ShellExecute($s_LocalPath)
    ConsoleWrite("Download: " & $aFiles[$i] & " erfolgreich" & @CRLF)
    Else
    ConsoleWrite("Download: " & $aFiles[$i] & " fehlgeschlagen " & " " & @error & @CRLF)
    EndIf
    Next
    Else
    MsgBox(0, "Connect", "fehlgeschlagen")
    ConsoleWrite("Connect: " & " " & $errFTP & @CRLF)
    EndIf
    Else
    MsgBox(0, "Open", "fehlgeschlagen")
    ConsoleWrite("Open " & " " & $errOpen & @CRLF)
    EndIf
    _FTP_Close($l_InternetSession) ;schliesst die FTP-Sitzng
    EndFunc ;==>_example

    [/autoit]

    ich denke das war erst einmal genug für heute, denn du solltest dir die verwendeten Befehle noch in der Hilfe anschauen damit du sie verstehst und später selbstständig verwenden kannst.

    Edit: Skriptfehler bereinigt
    mfg autoBert

    Einmal editiert, zuletzt von autoBert (12. Dezember 2012 um 15:38)

  • Hallo autoBert

    Danke für die tolle Unterstützung. Jedoch meckert er bei dem Script in Zeile 84
    Edit: Werde ich machen.

    Aber Script geht leider immer noch net. Jetzt kommt immer Fenster Connect - Fehlgeschlagen
    Werde mal bissl Funtionen Studieren.
    Melde mich morgen nochmal

    grüße
    andré

    2 Mal editiert, zuletzt von xeron71 (12. Dezember 2012 um 16:19)