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

  • Links in ein Array schreiben, Link finden und öffnen

    • misterspeed
    • 25. August 2011 um 20:49

    Hatte einen Fehler bei _ienavigate drin, funktioniert bei mir jedenfalls nachdem ich das behoben habe:

    [autoit]

    _ienavigate($inet,$alink[$search])

    [/autoit]
  • Links in ein Array schreiben, Link finden und öffnen

    • misterspeed
    • 25. August 2011 um 20:37

    Muss ich wohl überlesen haben...

    [autoit]


    ;...
    $search = _Arraysearch($alink,"http://cgi.ebay.de",0,0,0,1) ; findet den 1. Link in dem das suchwort vorkommt
    if $search <> -1 Then ; wenn etwas gefunden wurde...
    _ienavigate($inet,$alink[$search])
    Else
    MsgBox(0,"fehler","nix gefunden...")
    EndIf
    ;...

    [/autoit]
  • Links in ein Array schreiben, Link finden und öffnen

    • misterspeed
    • 25. August 2011 um 20:25

    Er findet aber mehr als einen... woher soll dein script nun wissen welchen du meinst. Musste halt den Suchbegriff so anpassen, dass er nur das findet was du eben haben willst. Bislang hast du nirgendwo geschrieben welcher der Links dich eigtl interessiert und was danach passieren soll. Ich gehe nun mal davon aus, dass du alle links die dem Kriterium entpsrechen nacheinander aufrufen und auf den entsprechenden Unterseiten weitere Dinge tun willst. In dem Fall arbeite eben mit Funktionen:

    [autoit]


    ;...
    $search = _ArrayFindAll($alink,"http://cgi.ebay.de",0,0,0,1) ; findet alle links in denen das suchwort vorkommt
    if $search <> -1 Then ; wenn es links mit dem suchwort gibt...
    for $i = 0 to UBound($search)-1
    ConsoleWrite($alink[$search[$i]] & @CRLF) ; jeden gefunden link in die scite console schreiben, stattdessen einfach _ienavigate verwenden...
    tuwas($alink[$search[$i]])
    Next
    Else
    MsgBox(0,"fehler","nix gefunden...")
    EndIf
    ;...

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

    func tuwas($page)
    _ienavigate($page)
    ; irgendwas auslesen, ausfüllen oder was weiss ich...
    msgbox(0,"fertig",$page & " wurde abgearbeitet...")
    endfunc

    [/autoit]
  • Links in ein Array schreiben, Link finden und öffnen

    • misterspeed
    • 25. August 2011 um 18:51
    Spoiler anzeigen
    [autoit]


    #include<IE.au3>
    #include<Array.au3>
    #include<String.au3>
    #include<inet.au3>

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

    Global $inet, $x, $links, $ie_fenster

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

    ; Ebay Store wird geöffnet
    $inet = _IECreate("http://stores.ebay.de/HANDY-TEILE-SHOP")
    _IELoadWait($inet)
    $links = _IELinkGetCollection($inet)

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

    Local $x = 0, $alink[@extended]

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

    For $link in $links
    $alink[$x] = $link.href
    $x += 1
    Next

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

    _ArrayDisplay($alink) ; alle gefundenen links
    $alink = _ArrayUnique($alink) ; entfernt doppelte links
    _ArrayDisplay($alink) ; kontrolle

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

    $search = _ArrayFindAll($alink,"http://cgi.ebay.de",0,0,0,1) ; findet alle links in denen das suchwort vorkommt
    if $search <> -1 Then ; wenn es links mit dem suchwort gibt...
    for $i = 0 to UBound($search)-1
    ConsoleWrite($alink[$search[$i]] & @CRLF) ; jeden gefunden link in die scite console schreiben, stattdessen einfach _ienavigate verwenden...
    Next
    Else
    MsgBox(0,"fehler","nix gefunden...")
    EndIf

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

    _IEQuit($inet)
    Exit

    [/autoit]
  • Edit - Feld so groß wie der Text

    • misterspeed
    • 25. August 2011 um 15:56

    Hier mal zumindestens ein Grundgerüst wie man das machen könnte:

    Spoiler anzeigen
    [autoit]


    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    ;#include <array.au3>

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

    global $LineCount = 1

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

    $gui = GUICreate("Meine GUI mit einem Edit-Feld") ; Erstellt ein GUI-Fenster welches mittig ausgerichtet wird

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

    $myedit = GUICtrlCreateEdit("", 176, 32, 100, $LineCount * 25, BitOR($ES_WANTRETURN, $WS_VSCROLL, $ES_AUTOVSCROLL))
    ;$debug = GUICtrlCreateButton("debug",10,10,100,30)

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

    GUISetState()

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

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
    While 1
    $msg = GUIGetMsg()
    ;if $msg = $debug Then
    checkEditSize()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd

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

    func checkEditSize()
    $text = GUICtrlRead($myedit)
    $lines = StringSplit($text,@CRLF,1)
    ;_ArrayDisplay($lines)
    if $lines[0] <> $LineCount Then
    $LineCount = $lines[0]
    $curSize = ControlGetPos ( $gui, "", $myedit )
    ;_ArrayDisplay($curSize)
    GUICtrlSetPos ( $myedit, $curSize[0], $curSize[1] , $curSize[2], $LineCount*25 )
    EndIf
    EndFunc

    [/autoit]

    Ob Enter gedrückt wurde kannst du denke ich mit

    [autoit]

    _ispressed

    [/autoit]


    abfragen, im obigen Beispiel muss der Debug Button gedrückt werden. Das Resizen passt so wohl auch noch nicht ganz, denke aber bekommst das schon in den Griff. Auf jedenfall solltest du aber wohl ein maximales Limit für die Höhe setzen...

    EDIT: Debug Button funktionslos gemacht und arraydisplay auskommentiert... Abfrage ob Enter gedrückt wurde ist so eigtl. nicht notwendig

  • Webseiten Unwetterwarnungen - letzter Post

    • misterspeed
    • 24. August 2011 um 13:11

    Würde mir da an deiner Stelle eher nähere Informationen zur XML API zusenden lassen: http://www.unwetterzentrale.de/uwz/webservice.html
    Im Gegensatz zu diesem Abo Service scheint das auch kostenlos zu sein, steht da allerdings nicht dabei.

    Vorteil ist eine besser strukturierte Datei, die leichter verarbeitet werden kann als dieser Quellcode.

  • Aktion ausführen beim beenden eines Skriptes (FF.au3, MozRepl)

    • misterspeed
    • 24. August 2011 um 10:14

    Ahja, also wenn man multiple Profile verwendet hat jedes Profil eigene Addons? Das wusste ich nicht... dann werd ich das vllt bei mir auch mal so umstellen :)

    PS: Bei der Portable muss man zunächst noch eine ini ins richtige Verzeichnis kopieren in der multiple Instanzen erlaubt sind (siehe webseite von portableapps), ausserdem darf/kann die ffstart Funktion nicht benutzt werden, sondern der Start muss per run und anschliessendem _ffconnect erfolgen. Aber die Profillösung ist natürlich sowieso die bessere Variante.

  • TCP Problem

    • misterspeed
    • 22. August 2011 um 13:43

    Kann so ja nicht funktionieren. Der Empfänger darf nicht an seiner Internet IP lauschen, sondern an der IP seiner Netzwerkkarte, was normalerweise ja etwas aus dem lokalen ip Bereich sein sollte (Ausnahme wäre wohl ein Server der im Rechenzentrum steht und direkt mit dieser IP erreichbar ist...).

    Der Sender muss die externe IP Adresse des Empfängers nutzen.

    Beispiel:

    Sender (=Client):

    Netzwerkkarte 1: 192.168.1.1
    externe IP: 97.125.1.7

    Empfänger (=Server):

    Netzwerkkarte 1: 192.168.2.25
    externe IP: 91.155.8.121

    Sender verschickt an 91.155.8.121:1234
    Empfänger lauscht an 192.168.2.25:1234
    Empfänger muss ausserdem seinen Port 1234 im Router auf die lokale IP 192.168.2.25 weiterleiten (Stichwort Port Forwarding) und ggf. eingehende Verbindungen auf diesem Port in der Firewall des PC's erlauben.

  • Start des Internet Explorers im Privaten Modus

    • misterspeed
    • 22. August 2011 um 13:14
    Zitat von sillyboy

    hallo so sollte es klappen

    Glaub du hast die Frage nicht verstanden. Er wollte wissen wie man den IE im privaten Modus startet, nicht wie ein login script ausschauen könnte.

    @Topic:

    Ich weiß ehrlich gesagt gerade aber nicht was der private modus im IE überhaupt bewirkt. Vielleicht kannst du das Verhalten mit

    [autoit]


    _iePropertySet()

    [/autoit]

    nach dem Start erzwingen. Habe aber in der Hilfe nichts im speziellen zum private mode gesehen. Auch der IE start erfolgt nicht per run wenn man sich mal die ie.au3 ansieht, sondern per com Objekt. Vielleicht findest du da näheres in der MSDN Dokumentation wie man darüber den private mode realisieren kann. Ggf. müsstest du dir dann anhand der ie.au3 Vorlage eine modifizierte _iecreate Funktion schreiben.

    EDIT:
    Hier mal nach dem Stichwort "InternetExplorerMedium " schauen:

    http://msdn.microsoft.com/en-us/library/…v=vs.85%29.aspx
    http://visualbasic.about.com/od/quicktips/qt/proc_html2.htm

    und hier noch einige Lösungsversuche aus dem englischen Forum:

    http://www.autoitscript.com/forum/topic/10…private-window/

  • Kleines Array Problem

    • misterspeed
    • 21. August 2011 um 11:20

    Auch wenn Progandy's Variante vielleicht im Endeffekt etwas performanter sein mag spielt die Performance hier doch aber keine Rolle, weil die Schleife permanent durch Usereingaben unterbrochen wird und wir es hier wohl nur mit sehr kleinen Arrays mit vermutlich weniger als 100 Einträgen zutun haben. Diese Methode macht höchtens Sinn wenn wir Richtung 1000+ Einträge gehen und das Befüllen automatisch ohne Unterbrechung erfolgt. Für das Beispiel hier ist die arrayadd Funktion denke ich die benutzerfreundlichste.

    Hier noch eine Ergänzung um das Array nachträglich 0-basiert zu bekommen:

    [autoit]


    Dim $fieldarray[1]
    $fieldid=InputBox("ID","Bitte gebe die erste ID ein")
    While $fieldid <> ""
    _ArrayAdd($fieldarray,$fieldid)
    _ArrayDisplay($fieldarray,"Ganzer Array") ; Zum debuggen
    $fieldid=InputBox("ID","Bitte gebe die nächste ID ein")
    WEnd
    _arraydelete($fieldarray,0) ; löscht index 0 und verkleinert das Array um 1
    _ArrayDisplay($fieldarray,"Ganzer Array") ; Zum debuggen

    [/autoit]

    Grundsätzlich stört es aber auch nicht wenn wir ein 1-basiertes Array verwenden, du musst das eben später beim auslesen berücksichtigen:

    [autoit]


    for $i=1 to ubound($array)-1 ; statt $i =1 eben $i = 0 wenn deine Daten 0-basiert sind
    msgbox(0,"Index Nummer: " & $i,$array[$i])
    next

    [/autoit]

    Anstelle einer msgbox könntest du so natürlich auch edit Felder deiner gui befüllen oder dir ein lisview in einer gui füllen (array display ersatz oder sowas...).
    Da du aber noch nix mit Autoit zutun hattest wird das aber wohl erstmal etwas zuviel des Guten sein.

  • Wie komme ich an die Controls?

    • misterspeed
    • 21. August 2011 um 10:59
    Zitat von Sprenger120

    Was ist das für ein Programm, wo kann man sich das angucken

    Auch wenn du recht hast, dass es nicht unsere Aufgabe ist danach zu suchen, kurz googlen hilft...

    http://vdownloader.softonic.de/screenshots

    Mein erster Eindruck ist jedenfalls, dass die Hauptfunktion (Aktivität: linkinput und download button) problemlos von Au3info erkannt werden sollten. Was die suche angeht wird es möglicherweise problematisch (schaut nach einem integrierten Browser aus).
    Die Frage bleibt also was du nun genau automatisieren willst. Hab mir das Teil aber jetzt nicht installiert und meine Vermutungen basieren rein auf den oben verlinkten Screenshots.

  • Installation des Programms mit zwei möglichen Fenster die danach kommen?

    • misterspeed
    • 20. August 2011 um 23:37
    [autoit]


    Run('C:\Programme\CAD-Station\Update.exe')

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

    WinWait("Microsoft Visual C++ 2008 Redistributable Setup")
    $text = wingettext("Microsoft Visual C++ 2008 Redistributable Setup")
    if stringinstr($text,"Maintenance mode") <> 0 then
    fall1()
    else
    fall2()
    endif
    ;~ .... ab hier geht es gleich weiter

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

    func fall1()
    ;~ Fall 1
    ;WinWait("Microsoft Visual C++ 2008 Redistributable Setup","Maintenance mode") ; Then <-- das gibts schonmal garnicht ohne ein if davor...
    ControlClick("Microsoft Visual C++ 2008 Redistributable Setup","Maintenance mode","Button9")
    ControlClick("Microsoft Visual C++ 2008 Redistributable Setup","Maintenance mode","Button7")

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

    WinWait("Microsoft Visual C++ 2008 Redistributable Setup","Setup Complete") ; Then <-- das gibts schonmal garnicht ohne ein if davor...
    ControlClick("Microsoft Visual C++ 2008 Redistributable Setup","Setup Complete","Button2")
    endfunc

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

    func fall2()
    ;~ Fall 2
    ;WinWait("Microsoft Visual C++ 2008 Redistributable Setup","Welcome to Microsoft Visual C++ 2008 Redistributable Setup")
    ControlClick("Microsoft Visual C++ 2008 Redistributable Setup","Welcome to Microsoft Visual C++ 2008 Redistributable Setup","Button12")

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

    WinWait("Microsoft Visual C++ 2008 Redistributable Setup","Setup Complete")
    ControlClick("Microsoft Visual C++ 2008 Redistributable Setup","Setup Complete","Button2")
    endfunc

    [/autoit]
  • Aktion ausführen beim beenden eines Skriptes (FF.au3, MozRepl)

    • misterspeed
    • 20. August 2011 um 22:22
    Zitat von Crusoe

    Damit ich jeder Instanz einen seperaten Port zuweisen kann, muss ich dann x verschiedene mobile FF Versionen haben, damit ich bei jeder den MozRepl Port ändern kann.

    Das war jedenfalls mein Gedanke. Also wirklich mehrere voneinander unabhängige portable ordner mit jeweils eigenem Mozrepl welche alle auf verschiedenen Ports lauschen.

    Der Vorschlag beruht aber auf der Annahme, dass grundsätzlich nur eine gleichzeitige Verbindung mit mozrepl hergestellt werden kann. Das habe ich jedenfalls aus deinen connection Probs geschlossen und auch selbst hatte ich das schonmal mit 2 instanzen meines Scriptes die zeitgleich auf Mozrepl zugreifen sollten. Wirklich ausgetestet habe ich das ganze aber nie, stattdessen habe ich dafür gesorgt, dass die eine Scriptinstanz wartet bis die andere fertig ist und FF beendet wurde.

    Theoretisch sollte es jedenfalls keine Komplikationen mehr geben wenn man mit zwei oder mehren unabhängigen FF Portables arbeitet.

    Ob es auch möglich ist einer einzigen FF/Mozrepl Instanz eine ganze Portrange zuzuweisen um multiple connects ohne Komplikationen zu ermöglichen weiß ich nicht, das wäre dann natürlich die schönere Variante.

    EDIT: Mehr als einen Port kann man offenbar nicht zuweisen, steht danach jedenfalls nur noch eine 0 im Feld...

  • Unattended Installation

    • misterspeed
    • 20. August 2011 um 13:37

    Das Blockinput solltest du rausnehmen. Braucht man eigentlich nur wenn man mit send() oder auch mousemove() / mouseclick() arbeitet. Da du das ja nun alles schön durch control Funktionen ersetzt hast sollte kein Bedarf mehr für blockinput() bestehen.
    Ich persönlich würde es als unschön erachten wenn ich ggf. minutenlang die Maus und Tastatur nicht verwenden kann. Gerade wenn dein script in den winwait Funktionen hängenbleibt könnte das ein ernstes Problem werden.

  • Aktion ausführen beim beenden eines Skriptes (FF.au3, MozRepl)

    • misterspeed
    • 20. August 2011 um 12:45

    Ich würde da an deiner Stelle mit speraten portablen FF Instanzen arbeiten und dabei auch darauf achten, dass mehrere Instanzen erlaubt sind. Vorteile:

    - Du kannst jeder FF & Mozrepl Instanz eigene Ports zuweisen, was deine Verbindungsprobleme beheben sollte
    - Du hast seperate FF Prozesse die auch problemlos beendet werden können (normalerweis gibt es nur 1 FF Prozess mit mehreren Fenstern)
    - Du kannst Updates abstellen und zumindestens für deine vorkonfigurierten Script FF Instanzen darauf vertrauen, dass sie auch in Jahren noch kompatibel zum Script sind, was beim Haupt FF den du auch zum browsen verwendest nicht empfehlenswert ist


    Grundsätzlich kann man Fenster aber immer mit

    [autoit]

    winclose()

    [/autoit]

    schliessen. Dafür benötigst du aber einen eindeutigen Fenstertitel.

  • Abhängig vom Computername ein Teil der Script ausführen?

    • misterspeed
    • 20. August 2011 um 09:38

    Sofern wir von einem nomalen Datei-Menü reden schau dir in der Hilfe mal das an:

    [autoit]


    WinMenuSelectItem(...)

    [/autoit]
  • Abhängig vom Computername ein Teil der Script ausführen?

    • misterspeed
    • 19. August 2011 um 17:13

    Statt mit solchen Tastenkombinationen rumzumachen würde ich eher versuchen das gewünschte per control Funktionen zu erreichen. Neben controlsettext und controlclick gibt es ja noch einige weitere, die zum beispiel die Steuerung des Menüs (falls vorhanden) erlauben.

  • Abhängig vom Computername ein Teil der Script ausführen?

    • misterspeed
    • 19. August 2011 um 16:53

    Kann man zum Beispiel so machen...

    [autoit]


    $name = @computername
    $nameleft = stringleft($name,4)
    if $nameleft = "i565" then
    ;...
    else
    $nameleft2 = stringleft($name,2)
    switch $nameleft2
    case "05"
    ;....
    case "52"
    ;....
    case else
    msgbox(0,"fehler","computername ungültig....")
    endswitch
    endif

    [/autoit]
  • _ArrayDisplay - Eigenschaften ändern?

    • misterspeed
    • 19. August 2011 um 12:03

    Direkt im Standard Include würde ich nichts ändern, da davon dann eben sämtliche Scripte betroffen wären die du zukünftig kompilierst. Aber du kannst dir das ganze als Vorlage nehmen und dir eine eigene _customArrayDisplay() Funktion daraus basteln die du dann direkt ins Script einfügst.

  • Erkennung von Youtubeseite!

    • misterspeed
    • 18. August 2011 um 20:29

    Kontrollier mal ob der Haken gesetzt ist und MozRepl überhaupt läuft.

    [Blockierte Grafik: http://i.imgur.com/ebxhh.png]

    Ansonsten könnte auch deine Firewall / Antivirenlösung den Port blocken oder aber der Port wird von anderen Programmen verwendet. In letzterem Fall mal Alternativports versuchen und FFconnect entsprechend anpassen.

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™