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

  • Script mit Parametern starten

    • misterspeed
    • 6. November 2011 um 13:05

    Schonmal die Hilfe zu shellexecute gelesen? Dann sollte klar sein, dass bei shellexecute die Programmparameter im 2. Funktionsparameter übergeben werden. Alternativ kann auch run() benutzt werden, hier müssen die Programmparameter wie in deinem Beispiel übergeben werden.

  • Problem mit Zeichenketten die aus langen Zahlen bestehen

    • misterspeed
    • 6. November 2011 um 12:47

    Du hast zwar nicht wirklich geschrieben wofür du das brauchst und wo deine lange Zahl herkommt (eigtl sollte die sowieso als String vorliegen, denn Autoit selbst erzeugt keine integer die das Maximum überschreiten), aber du kannst auch mal nach der bignum.au3 suchen, vielleicht löst die ja dein Problem.

    BigInteger UDF

  • Endlosloop Start-Stop

    • misterspeed
    • 5. November 2011 um 00:11
    Spoiler anzeigen
    [autoit]


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

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

    Global $1
    Global $intervall

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

    $Form1 = GUICreate("Form1", 681, 208, 663, 194)
    $Pages = GUICtrlCreateButton("Blättern", 24, 24, 219, 169)
    $Button1 = GUICtrlCreateButton("Text 1", 312, 24, 75, 25)
    $Button2 = GUICtrlCreateButton("Text 2", 312, 56, 75, 25)
    $Button3 = GUICtrlCreateButton("Text 3", 312, 88, 75, 25)

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

    GUICtrlSetState($Button1, $GUI_DISABLE)
    GUICtrlSetState($Button2, $GUI_DISABLE)
    GUICtrlSetState($Button3, $GUI_DISABLE)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Pages ; Seiten werden durchgeblättert
    $1 = 0
    GUICtrlSetState($Pages, $GUI_DISABLE)
    GUICtrlSetState($Button1, $GUI_Enable)
    GUICtrlSetState($Button2, $GUI_Enable)
    GUICtrlSetState($Button3, $GUI_Enable)
    for $j=1 to 3 ; solange bis alle 3 Buttons gedrückt wurden
    $intervall = TimerInit()
    Do
    if TimerDiff($intervall)>=1000 Or $1=0 Then Anzeigen() ; nur einmal pro Sekunde
    $abort = GUIGetMsg()
    Until $abort=$Button1 or $abort=$Button2 or $abort=$Button3

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

    GUICtrlSetState($abort, $GUI_DISABLE) ; gedrückten Button deaktivieren
    if $abort = $Button1 Then Button1()
    if $abort = $Button2 Then Button2()
    if $abort = $Button3 Then Button3()
    Next
    ToolTip("") ; fertig
    GUICtrlSetState($Pages, $GUI_Enable)
    EndSwitch
    WEnd

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

    Func Anzeigen()
    $1 +=1
    ToolTip($1,600,300,$1)
    $intervall = TimerInit()
    EndFunc

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

    Func Button1()
    Msgbox(0,"","Code Button 1")
    EndFunc

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

    Func Button2()
    Msgbox(0,"","Code Button 2")
    EndFunc

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

    Func Button3()
    Msgbox(0,"","Code Button 3")
    EndFunc

    [/autoit]
  • WinINet

    • misterspeed
    • 29. Oktober 2011 um 11:00

    Am einfachsten kann man dir helfen wenn du mal eine alte und eine neue dieser Log Dateien als Dateianhang hier postest (packs in ne zip Datei). Was den Rest angeht stimme ich allen anderen hier zu. Benutz die ftp Funktionen der ftpex.au3, lad dir das alte log als oldhtml runter, mach deinen Datenabgleich, erzeuge die neue Datei, und lade die neue Datei dann hoch und überschreib dir das alte log auf dem FTP. Beim Datenabgleich liest du am besten beide Dateien in jeweils ein Array mit


    [autoit]


    #include <file.au3>
    dim $aOld
    dim $aPC
    _filereadtoarray("dateipfad1",$aOld)
    _filereadtoarray("dateipfad2",$aPC)

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

    $aNew = vergleich($aOld,$aPC)
    _filewritefromarray("dateipfad3",$aNew); siehe Hilfe

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

    ; und dann noch den ftp upload der neuen Datei (dateipfad3) die wir lokal gespeichert haben...

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

    func vergleich($aOld,$aNew)

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

    ;... hier vermutlich ne for Schleife welche die Arrays durchgeht
    ;... dazu müssten dann die Arraygrößen noch berücksichtigt werden
    ;... und es muss ein drittes Array $Ergebnis mit passender Größe angelegt werden (redim wird evtl benötigt, siehe Hilfe)

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

    return $ergebnis
    endFunc

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

    Sofern die HTML Datei brauchbare Zeilenumbrüche hat biste damit schon fast am Ziel. Du musst dann nur noch jeden Eintrag beider Arrays auf Gleichheit prüfen und die Arrays dann ab dem Index zusammenfügen wo es Unterschiede gibt. Genaueres kann man aber ohne Beispieldateien schlecht sagen.

  • AutoIt - Neuling benötigt Hilfe mit Batch

    • misterspeed
    • 21. Oktober 2011 um 20:58

    Wer Paranoid oder eher vorsichtig ist sollte aber wie bereits erwähnt wurde darauf verzichten Admin Passwörter auf Clientrechnern zu speichern, sei es nun im Klartext wie ursprünglich oder auch kompiliert. Beides kann ausgelesen werden und birgt Risiken.
    Die bessere Lösung wäre auf dem Zielsystem einen Serverdienst einzurichten der Kommandos von Clienten annimmt und dann lokal als Admin ode System die Aktion auf dem Server ausführt. So wäre das Passwort nur auf dem Server gespeichert und von Ausserhalb nicht auslesbar.

    Hierzu sollte man sich dann am besten mit den TCP Funktionen befassen. Alternativ kann man aber auch mit eventtriggern arbeiten.

    Der Aufbau könnte dann so aussehen:

    Remotecomputer:

    Useraccount ohne nennenswerte Rechte anlegen
    Aufgabenplannung->Aufgabe anlegen die bei bestimmter TriggerId mit Admin Privilegien ausgeführt wird

    Clientcomputer

    Trigger remote auslösen, dazu werden Passwort und Username des eingeschränkten Users benötigt und im Script gespeichert

    Infos zu Eventcreate:
    http://technet.microsoft.com/en-us/library/bb490899.aspx


    Vorteil zur aktuellen Lösung ist, dass sich auf den Clients keine Accountdaten befinden mit dennen man Schaden anrichten könnte. Desweiteren gestalten sich Updates leichter, da hierzu nicht auf jedem Client eine aktuelle Version des Scriptes vorhanden sein muss, sondern lediglich auf dem Server die Aufgabe zur gewählten TriggerID geändert werden muss.

  • Programm neu starten

    • misterspeed
    • 10. Oktober 2011 um 20:04

    Eine Lösung die in kompilierten und nicht kompilierten Zustand funktioniert habe ich erst gestern hier gepostet:

    https://autoit.de/index.php?page…6122#post236122

    Die Frage ist aber wozu sich das Programm neustarten soll. Du kannst das sicher auch ohne Neustart bewerkstelligen, poste doch mal dein Script.

  • Suche Idee: Abbrechen eines Unterprogramms

    • misterspeed
    • 9. Oktober 2011 um 11:35

    Wie wäre es wenn dein Hotkey das Programm neustartet anstatt die aktuelle Funktion zu verlassen? Das würde dann auch funktionieren wenn sich das Programm in einer verschachtelten Funktionsstruktur befindet.
    Hier ein Beispiel:

    Spoiler anzeigen
    [autoit]


    HotKeySet("{ESC}", "Terminate")
    HotKeySet("!d", "main")
    MsgBox(0,"","neue instanz")

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

    While 1
    Sleep(100)
    WEnd

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

    Func main()
    TrayTip("Welcome","main started",10000)
    While 1
    ConsoleWrite("-----------------" & @CRLF)
    submain1()
    submain2()
    Sleep(100)
    WEnd
    EndFunc
    Func submain1()
    for $i=1 to 5
    ConsoleWrite("submain1" & @CRLF)
    Next
    EndFunc
    Func submain2()
    for $i=1 to 5
    ConsoleWrite("submain2" & @CRLF)
    Next
    ConsoleWrite("submain2-sleep" & @CRLF)
    Sleep(3000)
    EndFunc
    Func Terminate()
    MsgBox(0,"","scriptrestart")
    if @Compiled then
    ConsoleWrite("compiled: " & '"' & @AutoItExe & '"' & @CRLF)
    Run('"' & @AutoItExe & '"') ; startet weitere instanz des kompilierten scripts
    Else
    ConsoleWrite("not compiled: " & '"' & @AutoItExe & '" "' & @ScriptFullPath & '"' & @CRLF)
    Run('"' & @AutoItExe & '" "' & @ScriptFullPath & '"') ; startet weitere instanz des nicht kompilierten scripts
    EndIf
    Exit ; beendet aktuelle instanz
    EndFunc

    [/autoit]
  • FF.au3 und Firefox 7

    • misterspeed
    • 29. September 2011 um 20:26

    FF 7 wurde ohnehin wegen Problemen mit Addons mehr oder weniger zurückgezogen (Auto Update...): http://www.heise.de/newsticker/mel…en-1351616.html
    Aber probiers halt einfach aus, gibt schliesslich portable Versionen wenn man mal eben schnell die aktuelle Version testen will ohne komplett umzusteigen: http://portableapps.com/apps/internet/firefox_portable

    Die MozRepl Beta soll jedenfalls bis Version 8 funktionieren: https://addons.mozilla.org/en-US/firefox/…ersion-1.1beta2

  • _FFXPath funktioniert nach _FFTabAdd nichtmehr

    • misterspeed
    • 25. September 2011 um 10:39

    Na das ging aus deinem Posting aber nicht wirklich hervor. :P
    Den aktiven Tab wählt man mit

    [autoit]

    _FFTabSetSelected

    [/autoit]

    Entweder per Index falls dieser bekannt ist oder per Label (siehe Hilfe Datei der ff.au3). Sollte weder das eine noch das andere bekannt sein könntest du auch alle Tabs durchgehen und dir die aktuelle URL auslesen um dann letzten Endes den richtigen zu finden.

    [autoit]


    $tabcount = _FFGetLength("tabs")
    for $i=0 to $tabcount-1
    _FFTabSetSelected($i)
    if StringInStr(_FF_GetCurrentURL(),"DE0008404005") then exitloop
    next

    [/autoit]
  • _FFXPath funktioniert nach _FFTabAdd nichtmehr

    • misterspeed
    • 24. September 2011 um 17:02
    [autoit]


    _FFTabAdd()
    _ffopenurl("http://www.boerse.de/wertpapier/DE0008404005")
    _ffloadwait()
    $name = _FFXPath("//*[@id='content_container']/div[1]/h1", "textContent")
    MsgBox(0, "", $name)

    [/autoit]

    So funktioniert es bei mir relativ oft, jedoch kommt manchmal eine 1 zurück anstelle von "Allianz". Das passiert so wie ich das beobachtet habe nur wenn ein bestimmtes Werbepopup geladen werden soll bzw. von FF geblockt wird. Die verschiedenen Werbeanbieter scheinen dort zu rotieren, so dass der falsche return Wert alle paar Versuche erscheint. Jedenfalls eine Verbesserung zu deinem Versuch, da habe ich grundsätzlich eine 0 zurück bekommen.

  • _ieAction (IE8) button Click will nicht

    • misterspeed
    • 17. September 2011 um 11:53

    Ahja auf die 64bit Sache wäre ich wohl nicht gekommen. Danke für den Hinweis. Hier ein etwas unschöner workaround der nur mit sichtbarem IE Fenster funktioniert:

    Spoiler anzeigen
    [autoit]


    #include <IE.au3>

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

    HotKeySet("{F5}","_start")
    HotKeySet("{F6}","_exit")

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

    $IEObj = _IECreate("http://translate.google.de/?hl=de#de|it|")

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

    While 1
    Sleep(100)
    WEnd

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

    Func _start()
    $source = _IEGetObjById($IEObj,"source")
    _IEFormElementSetValue($source,"test")

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

    $buttonSubmit = _IEGetObjById($IEObj,"gt-submit")
    _IEAction($buttonSubmit,"click")
    _IELoadWait($IEObj)

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

    $button = _IEGetObjById($IEObj,"gt-res-listen")

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

    $x=_IEPropertyGet($button, "screenx")
    $y=_IEPropertyGet($button, "screeny")
    MouseClick("",$x+5,$y+5,1,1)
    ;_IEAction($button,"click")
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]
  • _ieAction (IE8) button Click will nicht

    • misterspeed
    • 16. September 2011 um 14:53

    Dürfte wohl ein Problem mit den Sicherheitseinstellungen und dem Flash Plugin sein. Jedenfalls fehlen bei mir die Buttons zum Anhören des Textes und mir wird oben auch eine Leiste eingeblendet um den Adobe Flash Player zu installieren. Startet man den IE von Hand sind die Buttons vorhanden und auch das Flash Plugin verrichtet seinen dienst. Warum Flash nicht zur Verfügung steht wenn man per Autoit mit einem IE Objekt arbeitet weiss ich nicht...

    Der Rest des Scriptes funktioniert aber btw im IE8 bei mir fehlerfrei.

  • stringsplit -> einen array,den es nicht gibt, erstellen.

    • misterspeed
    • 7. September 2011 um 21:24

    Ersetz einfach die if Bedingung in Zeile 13:

    [autoit]

    If $teile[0] = 1 Then ; string wurde nicht gesplittet, weil keine punkte im string vorkommen...

    [/autoit]
  • Probleme TCP Chat

    • misterspeed
    • 7. September 2011 um 21:16

    Ich hab das Problem, dass ich keinen Quellcode sehe... woran könnte das liegen? :P

  • Problem mit Dropdownlist

    • misterspeed
    • 6. September 2011 um 20:28
    Zitat von button421

    Hmmm. einen Style gibt es dafür nicht...

    Klar gibt es einen Style der das Problem umgeht. Wie bereits erwähnt wurde klappt das Dropdown nur dann nach oben auf wenn es höher wird als die Desktop Auflösung nach unten noch hergibt. Damit sowas nicht passiert setzt man einfach die Höhe auf einen festen maximal Wert (der innerhalb der GUI liegt) und schält die automatische Höhe mit $CBS_NOINTEGRALHEIGHT ab. Dazu dann natürlich noch eine vertikale Scrollbar mit $WS_VSCROLL

    [autoit]


    ; $CBS_NOINTEGRALHEIGHT --> deaktiviert automatische Höhen Anpassung
    $Airlines = GUICtrlCreateCombo("", 290, 185, 250, 160, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL,$CBS_SORT,$WS_BORDER,$WS_VSCROLL,$CBS_NOINTEGRALHEIGHT), BitOR($WS_EX_CLIENTEDGE,$WS_EX_STATICEDGE))

    [/autoit]
  • AutoIt3 Compiler/Parser

    • misterspeed
    • 2. September 2011 um 19:58

    So ist es. Die Funktionen, seien es nun Standard oder auch UDF kann man wohl recht leicht portieren, gibt schliesslich in jeder Sprache Funktionen die vergleichbares tun. Das Hauptproblem werden die Variablen sein, da es in autoit eben keine fixen Datentypen gibt. Versuch mal sowas automatisiert in C zu portieren:

    [autoit]


    #include <array.au3>

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

    $test=test()
    _ArrayDisplay($test)

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

    Func test()
    $test = 123
    $test += 10
    $test &= "test"
    Local $test2[3]=[$test,2,3]
    $test=$test2
    return $test
    EndFunc

    [/autoit]

    Erst ist $test ein int, danach plötzlich ein string bzw. eine kette aus chars und später dann wird $test durch eine simple Wertzuweisung zum Array das strings und int enthält. Dürfte wohl äusserst schwer werden solche sachen abzufangen. Auch die GUI Konvertierung ist sicher nicht ganz so simpel.

  • _IECreateEmbedded() handle ???

    • misterspeed
    • 31. August 2011 um 16:51

    Hab mein Beispiel mal noch erweitert, aber hast deinen Fehler ja mittlerweile selbst gefunden:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>
    #include <array.au3>
    #include <GuiTab.au3>

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

    Global $oIE[4]

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

    $oIE[1] = _IECreateEmbedded()
    $oIE[2] = _IECreateEmbedded()
    $oIE[3] = _IECreateEmbedded()

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

    $Form1 = GUICreate("Form1", 1200, 840)
    $tabMenu = GUICtrlCreateTab(10,10,1180,780)
    $tab1 = GUICtrlCreateTabItem("Seite1")
    $Browser1 = GUICtrlCreateObj($oIE[1], 20, 40, 1160, 740)
    $tab2 = GUICtrlCreateTabItem("Seite2")
    $Browser2 = GUICtrlCreateObj($oIE[2], 20, 40, 1160, 740)
    $tab3 = GUICtrlCreateTabItem("Seite3")
    $Browser3 = GUICtrlCreateObj($oIE[3], 20, 40, 1160, 740)
    GUICtrlCreateTabItem("")
    $BtnAddPage = GUICtrlCreateButton("Seite hinzufügen",10,810,150,20)
    $BtnBavigateTo = GUICtrlCreateButton("Navigiere zu",180,810,150,20)
    GUISetState(@SW_SHOW)

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

    _IENavigate($oIE[1],"google.de",0)
    _IENavigate($oIE[2],"autoit.de",0)
    _IENavigate($oIE[3],"heise.de",0)
    $startTime=TimerInit()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $BtnAddPage
    $page = InputBox("goto url","link eingeben","google.de")
    _ArrayAdd($oIE,_IECreateEmbedded())
    GUICtrlCreateTabItem("Seite" & UBound($oIE)-1)
    GUICtrlCreateObj($oIE[UBound($oIE)-1], 20, 40, 1160, 740)
    GUICtrlCreateTabItem("")
    _IENavigate($oIE[UBound($oIE)-1], $page)
    Case $BtnBavigateTo
    $page = InputBox("goto url","link eingeben","google.de")
    _IENavigate($oIE[_GUICtrlTab_GetCurSel($tabMenu)+1], $page)
    EndSwitch
    if TimerDiff($startTime) > 10000 Then
    $startTime=TimerInit()
    for $i=1 to UBound($oIE)-1
    $page = _IEPropertyGet ( $oIE[$i], "locationurl" ) ; ist so schneller als mit ieaction "refresh", da nicht auf jede seite gewartet wird
    _IENavigate($oIE[$i],$page,0);_IEAction($oIE[$i],"refresh")
    ConsoleWrite("refresh site " & $i & ": " & $page & @CRLF)
    Next
    EndIf
    WEnd

    [/autoit]
  • Wenn Script läuft, wird arbeiten am PC unmöglich

    • misterspeed
    • 31. August 2011 um 14:47

    Poste am besten das komplette Ergebnis von au3info.

    EDIT: Ausserdem darfst du eine Variable natürlich nicht in Anführungszeichen setzen...

    [autoit]


    ControlSend ( $windowtitle, "", "", "{Enter}") ; wenn dann so...

    [/autoit]

    Die Controlid leer lassen dürfte aber nicht gehen, daher bitte vollständiges Log aus dem Tab summary.

  • FTP Array

    • misterspeed
    • 31. August 2011 um 14:38

    Kann ich bei meinem FTP Server ebenfalls nachvollziehen. Ich vermute das Ergebnis wird irgendwo gecached (vergleichbar mit inetget wenn man das flag für erneutes laden vom remote ort nicht setzt). Vielleicht kann Prog@ndy da ja was zu sagen, er scheint der UDF nach an der betreffenden Funktion beteilligt gewesen zu sein.

    autoBert:

    Ich glaube es ging nicht darum alle Dateien zu löschen, sondern in bestimmten Intervallen die Fileliste auf Veränderungen zu prüfen.

  • [FF] Automation of PrintPDF

    • misterspeed
    • 31. August 2011 um 12:12

    I don't think its possible to control other addons with ff.au3 (not sure about this...). But as you describe it (I don't know this addon) you don't need ff.au3 to control it. Instead you could use normal window control functions to select entry from FF file menu. The necessary window handle of FF should be available with:

    [autoit]

    $handle = _FFWindowGetHandle()

    [/autoit]

    After that you should be able to use:

    [autoit]


    WinMenuSelectItem($handle,...)

    [/autoit]

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™