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

Beiträge von misterspeed

  • Mit GUI im Vordergrund halten und im Hintergrund Klicks ausführen

    • misterspeed
    • 30. April 2014 um 17:19

    Wo ist dein komplettes Script? Welches Programm soll automatisiert werden? Warum muss deine GUI das Fenster des anderen Programmes überlagern?

  • Von FTP zu FTP laden

    • misterspeed
    • 30. April 2014 um 10:42

    Warum soll das nicht möglich sein? Schau dir in der Hilfe die Funktionen der FTP UDF an. Sofern du FXP, also den direkten Transfer zwischen beiden Servern meintest, dann ist das zumindestens nicht ohne weiteres mit den UDF Funktionen möglich. Da bietet sich dann evtl. ein automatisierbarer Drittanbieter FTP Client an. Oder du beschäftigst dich eben näher mit dem FTP Protokoll und verwendest

    [autoit]

    _FTP_Command

    [/autoit]

    um das gewünschte zu realisieren.

    Außerdem sei noch angemerkt, dass die FTP UDF leider nur unverschlüsselte FTP Sitzungen erlaubt, es empfiehlt sich also ohnehin alternative Clients zu automatisieren.

  • Kompiliertes Script soll "sich selbst" löschen können.

    • misterspeed
    • 28. April 2014 um 23:24

    Auch unter XP konnte man Tasks erstellen/planen. Siehe hier: http://en.wikipedia.org/wiki/At_%28Windows%29

    Laut wikipedia ist der Nachfolger von "at" die "schtasks.exe", allerdings gibt es die angeblich nicht unter XP Home und Starter. AT sollte aber auf allen Windows Plattformen funktionieren. Besonders aufwendig ist das auch nicht, du brauchst nur 2 Zeilen, die eine im Autoitscript um den Task anzulegen, die andere in der Batch um ihn wieder zu löschen.

  • Einfaches Programm zum Zeilen Löschen

    • misterspeed
    • 28. April 2014 um 15:32
    Zitat von BugFix

    misterspeed: Wenn jede Zeile gelesen wird, darfst du keinesfalls mit einem Zeilenzähler die gewünschte Zeile angeben. Dann wird jedesmal vom Anfang bis zu dieser Zeile gelesen. Gibst du nichts ein, gilt: Next Line, ohne dass das bisherige nochmal eingelesen wird. Der Pointer steht ja bereits am Ende der zuletzt gelesenen Zeile.

    Öhm ja, hilfe lesen soll helfen. Danke für den Hinweis, war bei meiner mikrigen Testdatei so nicht erkennbar.

    Hier mal eine gefixte Variante mit 100% Schreibcache, da wir bei einer 400mb Datei die um den Faktor 100 reduziert werden soll so wenig Ergebnisdaten haben, dass es kein Problem sein sollte diese komplett im RAM vorzuhalten und in einem rutsch zu schreiben. Bei mehr Daten macht ein auf XXX MB begrenzter cache aber sicherlich Sinn.

    [autoit]

    $inputFile = @ScriptDir & "\bigmoon.txt"
    $outputFile = @ScriptDir & "\littlemoon.txt"

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

    $hInFile = FileOpen($inputFile,0)
    $hOutFile = FileOpen($outputFile,1)
    $interval = 100
    $sOut = ""

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

    while 1
    $sLine = FileReadLine($hInFile)
    if @error = -1 Then ExitLoop
    $sOut &= $sLine & @CRLF

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

    For $i=1 to $interval-1
    FileReadLine($hInFile)
    if @error = -1 Then ExitLoop 2
    Next
    WEnd

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

    FileWrite($hOutFile,$sOut)

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

    FileClose($hInFile)
    FileClose($hOutFile)

    [/autoit]
  • Einfaches Programm zum Zeilen Löschen

    • misterspeed
    • 28. April 2014 um 14:35

    Hier mal eine simple Umsetzung der vorgeschlagenen Lösung:

    [autoit]


    $inputFile = @ScriptDir & "\bigmoon.txt"
    $outputFile = @ScriptDir & "\littlemoon.txt"

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

    ; create dummy input data
    $random = Random(10000,100000,1)
    $sData = ""
    For $i = 1 To $random
    $sData &= "Line " & $i & @tab & "blahblah...." & @CRLF
    Next
    FileWrite($inputFile,$sData)
    ; -----------------------------------------------------------

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

    $hInFile = FileOpen($inputFile,0)
    $hOutFile = FileOpen($outputFile,1)
    $interval = 100

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

    $i = 1
    while 1
    $sLine = FileReadLine($hInFile,$i)
    if @error = -1 Then ExitLoop
    FileWriteLine($hOutFile,$sLine)
    $i += $interval
    WEnd

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

    FileClose($hInFile)
    FileClose($hOutFile)

    [/autoit]
  • Kompiliertes Script soll "sich selbst" löschen können.

    • misterspeed
    • 28. April 2014 um 10:07

    Man könnte den Aufruf der scratch.cmd evtl. auch über die Aufgabenplannung "programmieren". Einfach Datei wie gehabt erstellen, Task zum Aufruf erstellen, Programm beenden. Dadurch dürfte der Virenscanner nicht mehr so ohne weiteres einen Bezug zwischen der Erstellung der Batch und der Ausführung durch dein Programm erkennen. Am Ende der batch sollte dann evtl. noch code eingefügt werden um den Task wieder aus der Aufgabenplannung zu entfernen.

    Aber selbst wenn das mit Bitdefender so klappen sollte ist das natürlich keine Garantie, dass es immer so klappt. Jeder Virenscanner arbeitet anders, wenn es um die Verhaltensanalyse geht, da kann schon ein Update reichen um eine vorher funktionierende Methode ebenfalls zu blockieren.

  • Diverses PC Zeug zu verkaufen

    • misterspeed
    • 27. April 2014 um 14:01
    • Intel® Xeon® Processor E3-1290 v2 (8M Cache, 3.70 GHz) VERKAUFT

      Spoiler anzeigen

      Link: http://ark.intel.com/de/products/65…-Cache-3_70-GHz
      Zustand: nagelneu, unbenutzt inklusive Rechnung von Mindfactory
      Preis: schlagt was vor, derzeit nirgendwo unter 750€ zu bekommen, hatte das gute Stück weitaus günstiger bekommen und würd das nun gern zu Geld machen :D

    • Asus P5E WS Professional Mainboard inkl. Intel Core2Duo 2,66GHz und Boxed Kühler VERKAUFT

      Spoiler anzeigen

      Link: http://www.asus.com/Motherboards/P…ional/overview/
      [Blockierte Grafik: http://i.imgur.com/agQjgGd.jpg]
      Zustand: nicht mehr ganz so neu, etwas staubig, aber funktionstüchtig
      Lieferumfang: Mainboard mit CPU und Kühler, Originalverpackung, Handbuch, Zubehör (evtl. unvollständig)
      Preis: 75€

    • MSI NX8600GTS-T2D256EZ-HD 256MB PCIe Grafikkarte (Passiver Kühler, also silent) VERKAUFT

      Spoiler anzeigen

      Link: http://de.msi.com/product/vga/NX…#/?div=Overview
      [Blockierte Grafik: http://i.imgur.com/TM2CeyD.jpg]
      Zustand: nicht mehr ganz so neu, aber funktionstüchtig.
      Hinweis: Das Gehäuse muss ausreichend belüftet sein, ansonsten könnte die Grafikkarte überhitzen
      Lieferumfang: Grafikkarte, Originalverpackung, Zubehör (evtl. unvollständig)
      Preis: 40€

    • 2 x Team Group Xtreem DDR2 800 1GB TXDD1024M800HC4-D VERKAUFT

      Spoiler anzeigen

      [Blockierte Grafik: http://i.imgur.com/NIbvDXC.jpg]
      Zustand: nicht mehr ganz so neu, aber funktionstüchtig
      Lieferumfang: Nur der RAM
      Preis: 25€ für alle 2 Module

    • Soundkarte Creative Labs Soundblaster Audigy PCI SB0090 VERKAUFT

      Spoiler anzeigen

      [Blockierte Grafik: http://i.imgur.com/vTwTxoL.jpg]
      Zustand: uralte PCI Soundkarte, aber funktionstüchtig
      Lieferumfang: Nur die Soundkarte
      Preis: 20€

    Versandkosten für versichertes DHL Paket kommen noch dazu.

    Wer was davon braucht einfach melden. Preisvorschläge sind natürlich auch willkommen ;)

  • Kompiliertes Script soll "sich selbst" löschen können.

    • misterspeed
    • 26. April 2014 um 21:53

    Geht bei mir auch problemlos unter 8.1 Pro x64. Schalt mal deinen Virenscanner testweise ab und teste nochmal. Außerdem wäre zum Debuggen wohl ein Aufruf der Batch mit sichtbarem Fenster, also @SW_SHOW angebracht.

  • Zwei While 1 Schleifen aber nur eine beenden?

    • misterspeed
    • 25. April 2014 um 16:49

    Poste bitte ein Script das wenigstens ansatzweise Sinn ergibt und dein Problem veranschaulicht.

    Dein aktuelles Beispiel lässt nur eine Aussage zu:
    Die zweite Schleife ist total unnötig, da es reicht einmalig bei Programmstart den Hotkey zu definieren. In einer Schleife hat dieser Befehl jedenfalls nichts verloren.


    PS: Vorsorglich schonmal der Link zu den Forenregeln, da diese Art von Script eigentlich immer aus der selben Ecke kommt... https://autoit.de/index.php?page=Forumrules

  • Access (.accdb) Datenbank auslesen etc.

    • misterspeed
    • 25. April 2014 um 14:24
    [autoit]

    #AutoIt3Wrapper_UseX64=n

    [/autoit]

    Setz das mal ins Script und es geht. Die UDF funktioniert wohl nur unter 32bit.

  • Access (.accdb) Datenbank auslesen etc.

    • misterspeed
    • 25. April 2014 um 14:17

    Was steht denn in der Scite console bei dir?

    Ich bekomme diesen Fehler

    Code
    --> Access.au3 Error from function _AccessOpen (Access Object Creation Failed)

    Dürfte aber wohl auch daran liegen, dass ich kein Access in meinem Office Paket habe...

  • Access (.accdb) Datenbank auslesen etc.

    • misterspeed
    • 25. April 2014 um 14:02

    Auf deinem Screenshot sieht man btw auch keine Datei namens "test.mdb". Also entweder ist diese hinter deiner msgbox versteckt oder du verwendest tatsächlich einen falschen Pfad worauf die Meldung ja hindeutet.

  • Classe aus website auslesen und clicken

    • misterspeed
    • 25. April 2014 um 12:08

    Um welche Webseite geht es denn? Link wäre hilfreich.

  • !! Bildschirm !!

    • misterspeed
    • 25. April 2014 um 09:50

    Eigentlich sollte ich ja nix mehr schreiben, da ich nicht glaube, dass es irgendwas ändert, aber da du nachwievor behauptest der zentrale Button würde seine Größe ändern hier der Gegenbeweis:


    [autoit]


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

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

    $Form1 = GUICreate("Form1", 600, 425, -1, -1,$WS_SIZEBOX + $WS_MINIMIZEBOX + $WS_MAXIMIZEBOX )

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

    Global $Button[6]

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

    $Button[1] = GUICtrlCreateButton("Button1", 250, 0, 100, 140)
    $Button[2] = GUICtrlCreateButton("Button2", 250, 180, 100, 40)
    $Button[3] = GUICtrlCreateButton("Button3", 250, 260, 100, 140)
    $Button[4] = GUICtrlCreateButton("Button4", 20, 180, 100, 40)
    $Button[5] = GUICtrlCreateButton("Button5", 480, 180, 100, 40)

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

    GUICtrlSetResizing($Button[1], $GUI_DOCKHCENTER + $GUI_DOCKVCENTER)
    GUICtrlSetResizing($Button[2], $GUI_DOCKHCENTER + $GUI_DOCKVCENTER + $GUI_DOCKSIZE)
    GUICtrlSetResizing($Button[3], $GUI_DOCKHCENTER + $GUI_DOCKVCENTER)
    GUICtrlSetResizing($Button[4], $GUI_DOCKLEFT + $GUI_DOCKWIDTH)
    GUICtrlSetResizing($Button[5], $GUI_DOCKRIGHT + $GUI_DOCKHEIGHT)

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

    GUISetState(@SW_SHOW)

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

    $timer = TimerInit()
    While 1
    if GUIGetMsg() = $GUI_EVENT_CLOSE then Exit
    if TimerDiff($timer) > 1000 Then
    For $i = 1 to UBound($Button)-1
    $aPos = ControlGetPos($Form1,"",$Button[$i])
    GUICtrlSetData($Button[$i],$aPos[2] & "x" & $aPos[3])
    Next
    $timer = TimerInit()
    EndIf
    WEnd

    [/autoit]

    Du magst vielleicht einen anderen Eindruck gehabt haben, aber das war dann wenn überhaupt nur eine optische Täuschung bedingt durch die VERGRÖSSERUNG der oberen und unteren Buttons. Wie dem auch sei lies die Dokumentation in der Hilfe und teste selbst, das bringt dir mehr als "wahnsinnig" rumzugooglen und hier im Forum zu demonstrieren, dass du nicht nur keine Ahnung hast, sondern auch noch postest bevor du dich selbst ausreichend mit den Antworten beschäftigt hast.

    In diesem Sinne schließe ich mit einem Zitat, das du dir selbst am ehesten zu Herzen nehmen solltest:

    Zitat von JoGi

    Lesen! Steht sogar schon geschrieben.

  • !! Bildschirm !!

    • misterspeed
    • 24. April 2014 um 20:37

    Sag mal willst du uns auf den Arm nehmen? Wenn du es schon nicht fertig bringst selbst mal rumzuprobieren und dir deine eigene Testgui zu bauen, dann schau dir wenigstens den Quellcode an den man dir hier auf dem Silbertablett serviert hat. Ein !! Blick in die Hilfe !! zum verwendeten Befehl

    [autoit]

    GUICtrlSetResizing

    [/autoit]


    reicht völlig um Frage 1 zu beantworten. Man müsste noch nichtmal in die Hilfe schauen, denn Button2 in der GUI Mitte aus meinem Beispielscript macht genau das was du wolltest. Er bleibt in der Mitte und er verändert seine Größe nicht (im Gegensatz zu den anderen Buttons...).

    Was Frage 2 angeht: Lies die Hilfe zu folgenden Funktionen und teste selbst...

    [autoit]

    wingetpos
    winmove

    [/autoit]
  • ListView bzw. ListViewItem (row) soll nicht angeklickt werden können.

    • misterspeed
    • 24. April 2014 um 19:49

    Nunja wo ist nun das Problem wenn die Einträge blau hinterlegt werden? Mehr als markieren ist ja nicht möglich wenn du keine Funktionalität für das Klickevent hinterlegst. Als workaround ist es evtl. möglich die Benutzerselektion einfach wieder zu entfernen, entweder als event auf gerade diesen ungewünschten Klick oder eben in regelmässigen Intervallen. Eine andere theoretisch mögliche Lösung wäre evtl. ein transparentes Label über dem Listview, dadurch sollten Klicks ebenfalls unmöglich sein.

  • !! Bildschirm !!

    • misterspeed
    • 24. April 2014 um 17:35

    Hier ein Beispiel wie man einzelne controls entsprechend relativ fixieren kann. Grundsätzlich kann man aber auch mit der Option "guiresizemode" das Defaultverhalten für alle controls festsetzen/ändern.

    [autoit]


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

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

    $Form1 = GUICreate("Form1", 600, 425, -1, -1,$WS_SIZEBOX + $WS_MINIMIZEBOX + $WS_MAXIMIZEBOX )

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

    $Button1 = GUICtrlCreateButton("Button1", 250, 0, 100, 140)
    $Button2 = GUICtrlCreateButton("Button2", 250, 180, 100, 40)
    $Button3 = GUICtrlCreateButton("Button3", 250, 260, 100, 140)
    $Button4 = GUICtrlCreateButton("Button4", 20, 180, 100, 40)
    $Button5 = GUICtrlCreateButton("Button5", 480, 180, 100, 40)

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

    GUICtrlSetResizing($Button1, $GUI_DOCKHCENTER + $GUI_DOCKVCENTER)
    GUICtrlSetResizing($Button2, $GUI_DOCKHCENTER + $GUI_DOCKVCENTER + $GUI_DOCKSIZE)
    GUICtrlSetResizing($Button3, $GUI_DOCKHCENTER + $GUI_DOCKVCENTER)
    GUICtrlSetResizing($Button4, $GUI_DOCKLEFT + $GUI_DOCKWIDTH)
    GUICtrlSetResizing($Button5, $GUI_DOCKRIGHT + $GUI_DOCKHEIGHT)

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

    GUISetState(@SW_SHOW)

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

    While 1
    if GUIGetMsg() = $GUI_EVENT_CLOSE then Exit
    WEnd

    [/autoit]
  • Excel Tabelle/Zeile auslesen und als $Variable in AutoIT benutzen

    • misterspeed
    • 24. April 2014 um 12:19

    Nunja wo ist die Schwierigkeit? Schonmal einen Blick in die Hilfe geworfen und geschaut was es alles an Excel Funktionen gibt?

    Da wären z.B.

    [autoit]


    _ExcelSheetList
    _ExcelSheetActivate
    _ExcelReadSheetToArray
    _ExcelReadArray
    _ExcelReadCell

    [/autoit]

    Vorraussetzungen die ebenfalls sinnvoll wären:

    - Der Umgang mit Schleifen
    - Der Umgang mit Arrays -> http://www.bug-fix.info/array_tut.htm

  • Ohne global in diesem Fall

    • misterspeed
    • 22. April 2014 um 12:18

    Wo ist das Problem diese Variable als lokale Variable zu nutzen und an deine andere Funktion weiterzureichen? Machbar ist es aufjedenfall, ob es sinnvoll ist ist ein anderes Thema, das hängt davon ab wo du diese überall sonst noch brauchst.

    Zitat von hausl78
    [autoit]


    ;...
    ;global $globFullFilePath = "" ; global, weiß nicht wie ich den sonst in btn_recheck_click() reinbekomme
    ;...
    Func frmMain_load()
    ;...
    local $globFullFilePath = "" ; global, weiß nicht wie ich den sonst in btn_recheck_click() reinbekomme
    ;...
    ; Event Listener
    While 1
    ;...
    Case $hBtnReCheck
    $globFullFilePath = btn_recheck_click($globFullFilePath)
    ;...
    WEnd
    EndFunc

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

    func btn_recheck_click($var)
    ;...
    $var = "irgendwasanderes"
    return $var
    endfunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]
    Alles anzeigen
  • TCP-Verbindung (Dauer)

    • misterspeed
    • 22. April 2014 um 10:51
    [autoit]


    local $socket = TCPListen ($ip,$port, 2048)
    local $socketid = 0

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

    While 1
    $socketid = TCPAccept($socket)
    If $socketid >= 0 Then
    $senderip = SocketToIP ($socketid)
    local $input = TCPRecv ($socketid, 4096)
    filewrite ($datei, @HOUR & ":" & @MIN & ":" & @SEC & " " & $senderip & " " & $input & @crlf)
    EndIf
    WEnd

    [/autoit]

    Was ich meinte ist der Verbindungssocket im Server. Dieser ist bei dir in der Variable $socketid gespeichert und hat nichts mit deinem $socket zu tun, welcher neue Verbindungen annehmen kann. Es ist aber richtig, wenn du den Verbindungsocket $socketid mit tcpclosesocket() schließt kann der client nichts mehr an den Server senden und muss eine neue Verbindung aufbauen. Wenn du also mehrere aktive Verbindungen haben willst braucht du statt einer Variable ein Array für die Verbindungssockets. Du könntest hier dann über dein Protokoll zur Kommunikation auch Regeln festlegen, damit Client und Server sich einigen können wie lange die Verbindung bestehen soll und wann es Zeit ist die Sockets auf beiden Seiten zu schließen. In deinem Beispiel trennt der Client aber ohenhin nach einmaligem senden, also kann auch der Server den Socket killen sobald die Daten empfangen wurden.


    EDIT:

    tcpshutdown bei "Programmende" hatte ich geschrieben, die Ewigkeit sollte spätestens dann vorbei sein wenn der Client oder der Server beendet wurde, hier verwendet man dann natürlich ein shutdown der TCP Funktionalität, genauso wie du bei Programmstart ein tcpstartup verwendest.

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™