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

Beiträge von BinDannMalWeg

  • Bilder Hochladen über Internet Explorer

    • BinDannMalWeg
    • 3. Juli 2016 um 16:28

    Ohne Erlaubnis von Ebay ist das was du da vor hast verboten.

    Zitat von Nutzungsbedingungen

    Es ist verboten [...] Roboter, Crawler, Spider, Scraper oder andere automatisierte Mechanismen zu nutzen, um auf die eBay Kleinanzeigen Website zuzugreifen und Inhalte zu sammeln, egal zu welchem Zweck, ohne unsere ausdrückliche schriftliche Zustimmung

  • übers Internet "anklingeln" - dynamische IP - Client Server

    • BinDannMalWeg
    • 24. Juni 2016 um 14:29
    Zitat von alpines

    Ein Ping entscheidet nicht ob die Verbindung tot ist oder nicht, ich kann ja die Verbindung "killen" und dennoch bleibt der Ping unverändert.Ich hatte komischerweise bisher nie Probleme mit den Rückgabewerten der Funktionen. Hast du ein Beispiel wo du das reproduzieren kannst?

    Was ich mit Ping meine ist kein normaler "Ping" sondern das hin und hersenden eines Pakets über die zu testende Verbindung. Dies ist der einzige Weg wie man momentan testen kann ob die Verbindung noch besteht. Mit den angehängten Testscripts solltest du das Problem reproduzieren können. Starte zunächst die Server.au3 und anschließend die Client.au3. Wenn die Client.au3 durchgelaufen ist, kannst du die Server.au3 auch abschießen. In der erstellten log.txt sollte dann (sofern beim Schreiben keine Kollisionen aufgetreten sind) am zeitlichen Ablauf erkennbar sein, dass TCPRecv() Mist zurückgibt.
    Schließt man das Socket auf der Seite des Clients normal, so geht beim Server @extended auf den Wert 1 (völliger Quatsch). Schließt man das Socket nicht und schießt direkt TCP ab, geht @error auf den Wert 10054.

    Dateien

    test server.au3 749 Byte – 385 Downloads test client.au3 511 Byte – 386 Downloads
  • übers Internet "anklingeln" - dynamische IP - Client Server

    • BinDannMalWeg
    • 24. Juni 2016 um 13:12
    Zitat von alpines

    Das ist leider nicht übertragbar, da auch TCPSend() bei einem TCPCloseSocket() nicht bemerkt, dass die Verbindung tot ist. Da müsste man dann schon einen Ping hin und her senden.

    Zitat von autoBert

    dann mach ein Bugticket auf.

    Danke, dass ich da nicht selbst drauf gekommen bin ist beschämend. :D Ich erstelle mal eins...

    Tut mir leid, dass ich diesen Thread verwüstet habe.

  • übers Internet "anklingeln" - dynamische IP - Client Server

    • BinDannMalWeg
    • 23. Juni 2016 um 22:25

    Ich möchte an dieser Stelle anmerken, dass die Rückgabeparameter (speziell die Error/Extended Werte) der TCPSend/-Recv Funktionen von Autoit seit geraumer Zeit verbuggt sind. Genauer: Es lässt sich nicht richtig feststellen ob eine Verbindung abgebrochen bzw. unterbrochen wurde. Die Funktionen liefern einfach nicht das zurück was in der Hilfe dokumentiert ist. Dieses Verhalten ist in der Stable sowie in der Beta vorhanden und besteht auch schon seit einigen Versionen, obwohl die Changelogs behaupten, dass die Fehler behoben worden wären.

  • parse von json ausgabe für online software-authentifizierung

    • BinDannMalWeg
    • 17. Juni 2016 um 16:32

    Ist zwar quick and dirty, aber wie wäre es hiermit?

    AutoIt
    #include <Array.au3>
    $sJSON = '{"activated":true,"instance":"E7A54398B8391F0","activation_extra":816,"message":"999999999 out of 999999999 activations remaining","timestamp":1466122833}'
    
    
    $aMatch = StringRegExp($sJSON, '"(\w+)":([^,\{\}]+),?', 3)
    
    
    _ArrayDisplay($aMatch)

    Und am Ende deines JSON war ne Klammer und ein Anführungszeichen zu viel...

  • Alternativen zum Array

    • BinDannMalWeg
    • 23. April 2016 um 20:05

    Es tut mit Leid das ich diesen Thread aus den Untiefen unseres Forums heraufholen muss, aber da es sich um eine so tolle Ansammlung von Beispielen handelt möchte ich hiermit zur Fehlerfreiheit dieser beitragen.
    Leider ist AspirinJunkie in der folgenden Beschreibung der "Liste" ein entscheidender Fehler unterlaufen.

    Zitat von AspirinJunkie

    Bei einer Liste stehen die einzelnen Elemente nicht hintereinander im Speicher sondern alle verteilt.
    Damit die Liste zu einer Einheit wird enthalten die einzelnen Elemente zusätzlich zu ihrem Wert noch eine Information darüber wo sich das nächste Element im Speicher befindet (Pointer).
    Das führt dazu das man ohne viel Aufwand Elemente löschen oder hinzufügen kann da einfach nur ein Wert erstellt oder gelöscht werden muss und ein entsprechender Verweis beim vorherigen Element geändert werden muss.
    Eine Liste ist in diesen Fällen enorm schneller als ein Array.

    Prinzipiell sind Listen aber nicht indiziert wie z.B. Arrays - möchte man auf die Elemente zugreifen müsste man theoretisch immer die Liste vom Anfang durchlaufen.

    Denn was er hier beschreibt ist exakt das Verhalten und die Funktionsweise einer sogenannten LinkedList. Im darauf folgenden Beispiel wird allerdings eine sogenannte ArrayList verwendet, was beispielsweise am Namen "System.Collections.ArrayList" und auch unter dem beigefügten Link erkennbar ist.
    Nun ist es allerdings so, dass eine ArrayList intern nicht wie die beschriebene LinkedList arbeitet. Wie schon der Name vermuten lässt, ist die zu Grunde liegende Datenstruktur keine verkettete Liste sondern ein normales Array. Daher sind die von AspirinJunkie genannten Vorteile größtenteils hinfällig. Die einzigen Vorteile die man bei Verwendung einer ArrayList im Vergleich zu einem normalen Array hat sind:

    • Das Array im Hintergrund wird dynamisch vergrößert falls mehr Platz benötigt wird.
    • Beim Löschen von Elementen aus der Liste werden die Lücken im Array automatisch zusammengeschoben.

    Außerdem hat man im Vergleich zum "normalen" Array fast identische Geschwindigkeiten beim Zugriff auf einzelne Elemente, da eben im Hintergrund ein Array existiert.
    Somit ist die "Die Liste" hier wohl doch nur indirekt eine Alternative zum Array.

  • While Schleife/Function unterbrechen/abbrechen

    • BinDannMalWeg
    • 7. April 2016 um 22:18

    Schau dir mal den OnEventMode für GUIs an, der löst dein Problem.

  • .exe mit .exe aufrufen, stapeln sich die Prozesse?

    • BinDannMalWeg
    • 11. Dezember 2015 um 00:21

    Kleines Beispiel:

    Spoiler anzeigen
    AutoIt
    If Not @Compiled Then Exit ConsoleWrite("script has to be compiled!" & @CRLF)
    Switch $CmdLineRaw
    	Case "" ; setup beginnen
    		start()
    	Case "foo"
    		foo()
    	Case "cleanup"
    		cleanup()
    	Case Else
    		ConsoleWrite("undefined attribute! (" & $CmdLineRaw & ")" & @CRLF)
    EndSwitch
    
    
    Func start()
    	ConsoleWrite("start" & @CRLF)
    	; ...
    	Run(@ScriptFullPath & " foo")
    	Exit
    EndFunc   ;==>start
    
    
    Func foo()
    	ConsoleWrite("foo" & @CRLF)
    	Run(@ScriptFullPath & " cleanup")
    	Exit
    EndFunc   ;==>foo
    
    
    Func cleanup()
    	ConsoleWrite("cleanup" & @CRLF)
    	;...
    	Exit
    EndFunc   ;==>cleanup
    Alles anzeigen


    Und statt denn Run()-Aufrufen kannst du auch den Programmaufruf (mit Parameter) in den Registyautostart schreiben und das System mit Shutdown() neustarten. Dann wird nach dem Neustart in der nächsten Funktion weiter gemacht.

  • Prüfen, ob ein Fenster offen ist, ohne goto

    • BinDannMalWeg
    • 8. Oktober 2015 um 14:08

    Vermutlich kennt der TE das Konstrukt einer Schleife noch gar nicht. Daher würde ich dazu raten erst einmal ein Grundlagentutorial durchzuarbeiten, bevor weiter drauf los programmiert wird.
    Links zu verschiedenen Tutorials gibts bei Tante Google, auf der Autoit.de Startseite oder ohne umwege direkt hier https://autoit.de/wiki/index.php/Tutorial

  • AutoIT ist ein Virus.

    • BinDannMalWeg
    • 24. Juli 2015 um 00:31

    Jetzt entspann dich mal wir können dafür auch nichts... :D
    Du kannst dein Programm auch bei Avast einsenden und sie darum bitten diesen Falsepositive auszubessern bzw. eine Ausnahme einzufügen. Das machen jedenfalls die meisten AV Hersteller, wenn man sie lieb darum bittet.

  • MsgBox ohne skript Pause

    • BinDannMalWeg
    • 8. Juli 2015 um 18:36
    Zitat von autobert2

    Dies würde ich gerne sehen wie beide GUI's auf Eingaben reagieren ohne sich gegenseitig zu blockieren.

    Hier ein Beispiel:

    Spoiler anzeigen
    AutoIt
    Opt("GuiOnEventMode", 1)
    
    
    For $x = 0 To 2
    	For $y = 0 To 2
    		createGUI("0", $x * 200, $y * 200, 150, 150, "callback")
    	Next
    Next
    
    
    While True
    	Sleep(500)
    WEnd
    
    
    
    
    Func createGUI($sTitle, $iX, $iY, $iWidth, $iHeight, $sCallback)
    	$hGUI = GUICreate($sTitle, $iWidth, $iHeight, $iX, $iY)
    	GUISetOnEvent(-3, "close", $hGUI)
    	GUICtrlCreateButton("Klick mich!", 0, 0, $iWidth, $iHeight)
    	GUICtrlSetOnEvent(-1, $sCallback)
    	GUISetState(@SW_SHOW, $hGUI)
    EndFunc   ;==>createGUI
    
    
    Func callback()
    	WinSetTitle(@GUI_WinHandle, "", WinGetTitle(@GUI_WinHandle) + 1)
    	GUICtrlSetBkColor(@GUI_CtrlId, Random(0x000000, 0xFFFFFF, 1))
    EndFunc   ;==>callback
    
    
    Func close()
    	GUIDelete(@GUI_WinHandle)
    EndFunc   ;==>close
    Alles anzeigen
  • MsgBox ohne skript Pause

    • BinDannMalWeg
    • 8. Juli 2015 um 18:00

    Sehr viel einfacher geht das so:

    AutoIt
    ExecuteSeperated("MsgBox(0, 'Test', 'yolo', 5)")
    
    
    Func ExecuteSeperated($sCodeLine)
            #pragma compile(AutoItExecuteAllowed, True)
    	Return Run(@AutoItExe & ' /AutoIt3ExecuteLine "' & $sCodeLine & '"')
    EndFunc   ;==>ExecuteSeperated
  • Datei einlesen bearbeiten und wieder speichern

    • BinDannMalWeg
    • 30. Juni 2015 um 19:30

    Sollte ausreichend kommentiert sein...

    Spoiler anzeigen
    AutoIt
    Local $sData = FileRead("test.txt")
    
    
    ; Zeilen nur mit Klammern löschen
    $sData = StringRegExpReplace($sData, "(?m)^{.+}$", "") ; beginnt und endet eine zeile mit { und } wird sie geleert
    
    
    ; leere Zeilen löschen
    $sData = StringRegExpReplace($sData, "(\r\n)+", @CRLF) ; mehrere aufeinander folgende zeilenumbrüche durch einen ersetzen
    
    
    ; Feld - Hauptwortumwandlung
    Local $sHauptwort, $aData = StringSplit($sData, @CRLF, 1) ; Zeilen -> Array
    $sData = ""
    
    
    For $i = 1 To UBound($aData) - 1 ; für jede Zeile
    	If StringRegExp($aData[$i], "^[^\d]+$") Then ; wenn die Zeile keine Zahl enthält (Hauptwort)
    		$sHauptwort = $aData[$i] ; setzen wir das neue hauptwort
    	ElseIf StringLeft($aData[$i], 4) = "Feld" Then ; wenn die zeile eine Feld-Zeile ist
    		$sData &= $sHauptwort & StringTrimLeft($aData[$i], 4) & @CRLF ; feld durch HW ersetzen
    	Else
    		$sData &= $aData[$i] & @CRLF ; andere Zeilen werden einfach übernommen
    	EndIf
    Next
    
    
    FileWrite("new.txt", $sData)
    Alles anzeigen

    Das ersetzen der Feld-Wörter durch die jeweiligen Hauptwörter könnte ein RegEx-Meister sicher auch in einem Pattern für StringRegexpReplace unterbringen. :D

  • Variable im Unterskript (2. Skript mit Runas) verwenden

    • BinDannMalWeg
    • 30. Juni 2015 um 16:00

    Wenn du das Starten mit Parametern implementiert hast, pack in das Unterprogramm ne Debugausgabe und lass dir den Inhalt von $CmdLineRaw ausgeben. Was du dann mit dem Usernamen machst ist dir überlassen...

  • Variable im Unterskript (2. Skript mit Runas) verwenden

    • BinDannMalWeg
    • 30. Juni 2015 um 01:18

    Übergib einfach aus dem Hauptscript (das mit User-Rechten läuft) den Inhalt von @Username als Parameter an die als Admin gestarteten Unterprogramme. In diesen kannst du mittels der Variablen "$CmdLineRaw" dann auf die Parameter zugreifen und weißt somit welcher Benutzer eigentlich gerade angemeldet ist...
    Die Parameter kannst du einfach getrennt durch ein Leerzeichen an den Pfad zum Programm anfügen:

    AutoIt
    RunAs ( "username", "domain", "password", logon_flag, "program" & " " & @Username  )


    Und im Unterprogramm kannst du dann auf den Usernamen zugreifen:

    AutoIt
    ConsoleWrite( "Momentaner User: " & $CmdLineRaw & @CRLF )
  • Autoit in der Konsole

    • BinDannMalWeg
    • 8. Juni 2015 um 15:28

    Kompiliert man dieses kleine Script und kopiert es in den System32-Ordner unter dem Namen autoit.exe, kann man in seiner Konsole immer und jederzeit auf einzelne Autoit-Befehle zugreifen. Ich persönlich finde das sehr praktisch, gerade wenn man schnell den Inhalt eines Makros benötigt, man eine Datei herunterladen möchte, oder oder oder...

    AutoIt
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    
    ConsoleWrite( Execute( $CmdLineRaw ) )

    Um nun den Pfad zum AppData-Verzeichnis auszugeben braucht ihr nun nurnoch autoit @AppDataDir in die Konsole einzugeben.

  • GrooveLoad - ein Grooveshark Downloader

    • BinDannMalWeg
    • 3. Mai 2015 um 17:18

    Schade, war wirklich ein tolles Projekt. Wie es scheint müssen alle kostenlosen Anbieter in diesem Bereich früher oder später zumachen. :/
    Man könnte noch ein letztes Update nachschieben, das die Nutzer beim Programmstart über die Schließung Groovesharks informiert und vielleicht noch die Möglichkeit bietet GrooveLoad zu deinstallieren?

  • Hostname von Lan-IP erhalten

    • BinDannMalWeg
    • 11. März 2015 um 23:26

    https://www.autoitscript.com/autoit3/docs/l…TCPIpToName.htm

  • Zuverlässig eigene IP auslesen?

    • BinDannMalWeg
    • 19. Februar 2015 um 16:53

    Das Problem mit den virtuellen Adaptern der VMs hatte ich hier auch schon des Öfteren. Aber wieso ignoriert ihr denn Phil-IT' Antwort so? Bei mir funktioniert das perfekt...

    Spoiler anzeigen
    [autoit]

    ConsoleWrite(@IPAddress1 & @LF)
    ConsoleWrite(@IPAddress2 & @LF)
    ConsoleWrite(@IPAddress3 & @LF)
    ConsoleWrite(@IPAddress4 & @LF)
    ConsoleWrite("-" & @LF)
    TCPStartup()
    ConsoleWrite(TCPNameToIP(@ComputerName) & @LF)
    TCPShutdown()

    [/autoit]
  • Frage zum Script :

    • BinDannMalWeg
    • 2. Februar 2015 um 00:19

    Sag mal hast du meine Antwort denn überhaupt gelesen?
    Falls Nein, scrolle bitte wieder nach oben und lies sie. Falls du sie doch schon gelesen hast möchte ich dich nocheinmal freundlichst darauf hinweißen, dass das hier kein Mach-Mir-Mal-Forum ist. Falls du nicht gewillt bist es wenigstens einmal selbst zu versuchen (wobei wir dir hier ja helfen möchten) dann solltest du lieber in den entsprechenden Bereich dieses Forums eine Programmieranfrage einstellen.

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™