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

  • ToolTip soll für 3 Sekunden angezeigt werden...

    • misterspeed
    • 1. August 2011 um 01:02
    Zitat von NoName

    Ein bisschen umständlich ist das schon oder?

    Öhm jetzt wo du es sagst. :P
    Meine Lösung hatte mir irgendwie auch nicht so recht gefallen. Keine Ahnung wo ich heute Mittag meinen Kopf hatte.

  • ToolTip soll für 3 Sekunden angezeigt werden...

    • misterspeed
    • 31. Juli 2011 um 12:12

    Hier auch von mir noch eine Adlib Variante, die die Positionsangabe berücksichtigt und mit einer Funktion auskommt:

    Spoiler anzeigen
    [autoit]


    Global $timestamp = TimerInit()
    Global $globalTimeout
    Global $myText = -1 ; scheinbar gibts sonst Probleme beim adlib aufruf, obwohl der Standardwert ja eigentlich gesetzt werden müsste...
    Global $myTimeout = 0 ; scheinbar gibts sonst Probleme beim adlib aufruf, obwohl der Standardwert ja eigentlich gesetzt werden müsste...

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

    showtooltip("Dies ist eine Anzeige",5000,@DesktopWidth-150,@DesktopHeight-45)

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

    while 1
    ; hauptschleife
    WEnd

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

    Func showtooltip($myText=-1,$myTimeout=0,$myXcoord=0,$myYcoord=0)
    Local $text = $myText
    Local $timeout = $myTimeout

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

    ConsoleWrite("showtooltip wurde aufgerufen: " & TimerDiff($timestamp) & @CRLF)
    if $text <> -1 then ToolTip($text,$myXcoord,$myYcoord) ; tooltip einblenden
    if $timeout > 0 Then ; wird nur beachtet, wenn die Funktion von hand aufgerufen wird
    $globalTimeout = $timeout
    $timestamp = TimerInit()
    AdlibRegister("showtooltip",100) ; ruft die Funktion zukünftig alle 100ms auf
    EndIf
    if TimerDiff($timestamp) > $globalTimeout-100 Then
    AdlibUnRegister("showtooltip") ; sorgt dafür, dass die Funktion nicht mehr regelmässig aufgerufen wird
    ToolTip("") ; tooltip ausblenden
    EndIf
    EndFunc

    [/autoit]
  • ToolTip soll für 3 Sekunden angezeigt werden...

    • misterspeed
    • 31. Juli 2011 um 11:21

    Zum Beispiel so:

    [autoit]


    ToolTip("Dies ist eine Anzeige",@DesktopWidth-150,@DesktopHeight-45)
    $timestamp = TimerInit()
    while 1
    consolewrite(TimerDiff($timestamp) & @CRLF)
    if TimerDiff($timestamp) > 20000 Then ToolTip("")
    Sleep(100)
    WEnd

    [/autoit]


    Der Position deines Tooltips zu Folge suchst du aber glaube ich eher diese Funktion

    [autoit]

    Traytip(...)

    [/autoit]

    Vorteil beim Traytip ist im übrigen auch, dass du eine Anzeigezeit definieren kannst. allerdings wohl nur zwischen 10 und 30 Sekunden.

  • Verzweifle bald... Hilfe bei Webseiten Formular ausfüllen...

    • misterspeed
    • 30. Juli 2011 um 15:28

    Naja dein Problem ist hier in erster Linie der IE und seine bescheuerte Sicherheitseinstellung. Diese verhindert, dass Inputfelder vom Typ File ausgefüllt werden können. Das ist selbst von Hand nicht möglich und muss zwingend über den Button Dialog erfolgen. In der Hilfe zu _IEFormElementSetValue wird dies ebenfalls erwähnt und auch ein Workaround als Beispiel präsentiert. Das scheint allerdings nur bis IE6 zu funktionieren wenn ich das recht gelesen habe. Bei mir ging es über die Fokus Variante jedenfalls nicht.

    Eine Lösung wäre es nun also den Fileopen Dialog zu automatisieren, welcher beim Button Druck erscheint. Das ist aber eher unschön. Ich habe jetzt mal etwas anderes ausprobiert, denn diese Funktionen der IE.au3 kannte ich bislang nicht. Mein Lösungsansatz manipuliert den Originalquellcode und ändert den Input Typ nach "Text". Dadurch Funktioniert dann im Anschluss auch die setValue Methode. Jedoch scheitert das Absenden danach mit einer Fehlermeldung des Javascriptes.

    Hier mal der aktuelle Stand, vielleicht findet ja jemand raus, warum das Absenden so nicht mehr funktioniert:

    [autoit]


    #include <ie.au3>

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

    $oie = _IECreate("http://www.doc2pdf.net/de/")
    $input = _IEGetObjByName ( $oie, "inputDocument")
    _IEPropertySet($input,"outerhtml",'<INPUT class="XINPUT txt" onchange=updateOutputFormats(this) size=25 type=text name=inputDocument>')
    $input = _IEGetObjByName ( $oie, "inputDocument")
    $test = _IEFormElementSetValue($input,"C:\test.docx")

    [/autoit]

    Ansonsten mach das ganze mit FF, da gibt es keine Probleme mit File Inputfeldern.

  • Array neu aufbauen

    • misterspeed
    • 30. Juli 2011 um 13:00
    [autoit]


    _ArrayDisplay($arrayfilter, "Select Felder")

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

    For $i = 0 to UBound($arrayfilter) -1
    ; hier veränderst du das array mit stringreplace oder was auch immer...
    next
    ;Danach schreibst du den Inhalt in die Datei:
    _filewritefromarray($filepath,$arrayfilter) ; ggf. noch den Startindex angeben ab welchem geschrieben werden soll, je nachdem ob das Array 0-based oder 1-based ist.

    [/autoit]

    Was dir das ganze in der Zwischenablage nutzt weiß ich nicht. Das macht nur dann Sinn wenn du es von Hand irgendwohin pasten willst, aber das könntest du genausogut auch dein Script machen lassen und dann brauchst du die Daten nicht in der Zwischenablage, sondern kannst diese auch direkt aus dem Array lesen.

  • Download speichern

    • misterspeed
    • 30. Juli 2011 um 12:01

    Welches Datei speichern? Den Downloadmanager der aufpoppt oder die Frage danach ob gespeichert oder geöffnet werden soll? Ausserdem ist es evtl noch interessant welche FF Verison du benutzt.
    Beide genannten Dinge kann man im übrigen abschalten wenn man sich die Einstellungen und ggf. auch die erweiterten einstellungen unter about:config ansieht.

    Eine spezielle Funktion in der FF.au3 bezüglich dieser Dialoge gibt es aber soweit ich weiss nicht. Das müsstest du dann entweder wie vorgeschlagen die Einstellungen von FF ändern oder aber du benutzt die Fenster-Funktionen (controlclick, controlcommand....) um die Dialoge zu steuern bzw zu schliessen.

  • Verzweifle bald... Hilfe bei Webseiten Formular ausfüllen...

    • misterspeed
    • 30. Juli 2011 um 11:36

    Also mal etwas am Thema vorbei... ich würde die Finger davon lassen. Die Seite wirkt für mich nicht sehr seriös (kein Impressum, keinerlei Hinweise bezüglich Datenschutz). Du musst also damit rechnen, dass deine dort hochgeladenen Dokumente missbraucht werden. Da du davon in der Regel nicht nur selbst betroffen bist, sondern auch die Empfänger deiner Briefe/Bewerbungsunterlagen usw. solltest du dir sehr gut überlegen ob du diesen Dienst nutzen möchtest. Es wird sogar explizit darauf hingewiesen, dass man keine vertraulichen Dokumente hochladen soll, warum man davor warnt... ich möchte es nicht herausfinden.

    Würde an deiner Stelle eher auf lokale Programme zurückgreifen.

  • Verschlüsselungsvorgang anhalten / restliche Zeit berechnen?

    • misterspeed
    • 29. Juli 2011 um 20:54

    Naja du kannst dir im Autoit Ordner\Include\ ja die crypt.au3 ansehen und dir daraus eine eigene modifizierte MyCrypt.au3 basteln, welche dir dann einen Fortschrittsverlauf ausgibt. Standardmässig kann die Funktion das jedenfalls nicht. Alternativ einfach mal ein wenig hier suchen, wenn ich mich recht entsinne gab es hier schon modifizierte crypt Funktionen die dir einen Verlauf anzeigen.

  • verschiedene befehle bei google und in der sufo nicht gefunden. bitte hilfe

    • misterspeed
    • 29. Juli 2011 um 20:37

    Naja oder du benutzt einfach die englische Hilfe vom Scite Editor. die Hilfedatei hat doch auch eine Suchfunktion, wenn du schon nicht weißt unter welcher Kategorie die Funktion random eingeordnet ist (wüsste ich gerade auch nicht).
    Ausserdem kannst du im Scite Editor auch den Befehl schreiben, markieren und F1 drücken, dann landest du ebenfalls im zugehörigen Hilfeeintrag. Setzt natürlich vorraus, dass du ihn korrekt schreibst.

  • au3 aus Script ausführen, auch auf Rechnern wo kein AutoIt installiert ist

    • misterspeed
    • 29. Juli 2011 um 13:09

    Hmm du scheinst recht zuhaben. Offenbar kann jede kompilierte Autoit exe mit diesem Parameter gestartet werden und dann beliebige au3 Dateien ausführen ohne dass der eigene Programmcode ausgeführt wird. Jede autoit.exe ist dann wohl ein vollwertiger Interpreter, jedoch werden weder includes die im Hauptprogramm enthalten sind noch die aus der plugin.au3 erkannt. Das heisst alle standard includes müssen vollständig beigelegt und die Pfade zu den includes müssen in den plugins entsprechend angepasst werden.

  • Hilfe: Kann seit 1 Woche den Quellcode nicht mehr laden!

    • misterspeed
    • 29. Juli 2011 um 11:06

    Oder du benutzt die IE.au3

    [autoit]


    #include <IE.au3>
    $s_URL="http://www.wdr.de/radio/wdr4/playlist/index.html?wochentag=1&zeit=0"
    $oIE = _IECreate ($s_URL,0,0,1) ; unsichtbar und warten bis seite geladen ist
    $sString = _IEDocReadHTML ( $oIE )
    _IEQuit ( $oIE )
    ConsoleWrite($sString)
    msgbox(0, "Quelltext ", $sString,0)

    [/autoit]

    EDIT: Aber den User Agent zu ändern langt wohl so wie es aussieht.

  • au3 aus Script ausführen, auch auf Rechnern wo kein AutoIt installiert ist

    • misterspeed
    • 29. Juli 2011 um 10:38
    Zitat von sc4ry

    cool, das funzt ja wirklich, thx =)


    Das Makro @autoitexe wird aber kaum funktionieren wenn kein Autoit installiert ist. Dazu kommt, dass das Makro auch bei installiertem Autoit nicht so funktioniert wie du es gerne hättest sofern dein Hauptscript kompiliert ist, denn dann verweist das Makro nicht mehr auf den Interpreter, sondern auf die eigene Programm.exe, siehe auch den Hilfeeintrag zum Makro.

    Du wirst also wie schon anfangs erwähnt wurde sowohl die Autoitexe selbst und alle potentiell benötigten include Dateien beilegen müssen und im Programm dann anstelle des Makros einen direkten Pfad zur beigelegten interpreter.exe angeben müssen. Da bleibt dann noch die Frage wo die includes gesucht werden, ggf. musst du die include Pfade der Plugin au3 vorher noch durch dein Hauptprogramm editieren lassen.

  • Mit ini Funktion starten?

    • misterspeed
    • 28. Juli 2011 um 10:18
    [autoit]


    call("functionname")
    execute("functionname()")

    [/autoit]
  • StringInStr Funktion

    • misterspeed
    • 27. Juli 2011 um 22:28
    [autoit]


    #include <file.au3>
    #include <array.au3> ; wird nur für arraydisplay zum debuggen gebraucht...

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

    global $array

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

    $file=@scriptdir & "\test.txt"
    _fileReadToArray($file,$array) ; datei in array speichern
    _arraydisplay($array) ; das Array zum debbugen anzeigen lassen
    $lastindex=$array[0] ; in Index 0 steht immer die Zeilenanzahl, also der Index der letzten Zeile
    msgbox(0,"Letzte Zeile",$array[$lastindex]) ; Ausgabe der letzten Zeile

    [/autoit]

    oder noch einfacher so:

    [autoit]


    $file=@scriptdir & "\test.txt"
    $lastLine = FileReadLine ( $file , -1 ) ; -1 bedeutet letzte Zeile, siehe Hilfe
    msgbox(0,"Letzte Zeile",$lastLine) ; Ausgabe der letzten Zeile

    [/autoit]
  • Problem bei TCP

    • misterspeed
    • 27. Juli 2011 um 18:33

    Naja so wie du es jetzt hast kannst du keine Antwort vom Server erhalten. Im client stellst du zunächst die Verbindung zum Server her, dann sendest du etwas und danach beendest du sofort die Verbindung mit close socket. Der Server kann dir dann auch nix mehr schicken, sollte ja logisch sein. Der Server kann von sich aus auch keine Verbindung mit dir herstellen, schliesslich hast du einen Client und bist selbst kein Server. Du musst die Verbindung im Client also mindestens solange aufrecht erhalten, bis dass du eine Antwort vom Server erhalten hast. Das bedeutet du musst im client nach dem senden noch eine Schleife mit tcprecv laufen lassen und erst danach die Verbindung mit close socket trennen.

    Nun zum Server Teil. Da musst du die empfangenen Nahcrichten auswerten und dann entsprechend mit tcpsend an den verbundenen Client, also $con deine Antwort verschicken.

  • AutoIT Script als Systemprozess

    • misterspeed
    • 27. Juli 2011 um 15:52

    FF muss man im übrigen nicht zwingend installieren, schau dir doch mal die portable Version an: http://portableapps.com/apps/internet/firefox_portable
    Vorteil ist, dass du so bereits ein vorkonfiguriertes FF ausliefern kannst, also zum Beispiel mit bestimmter Startseite speziellen Einstellungen, ggf. sogar mit integriertem MozRepl Addon für spätere Automatisierungsscripte usw.

  • Frage/Problem bezüglich FileRead

    • misterspeed
    • 27. Juli 2011 um 14:52

    Die Größe des Arrays spielt keine Rolle, du müsstest es glaube ich nicht mal als solches deklarieren, es dürfte genügen einfach nur die Variable zu deklarieren. _filereadtoarray nutzt die Variable dann als Array und dimensioniert dieses abhängig vom Dateiinhalt.

    EDIT:

    [autoit]


    $Arraysearch = _ArraySreach($aArray,$HWID) ;Nach der HWID in dem Array "$aArray" suchen
    If $Arraysearch =1 Then ;wenn ein fund besteht

    [/autoit]

    Das ist btw. falsch. Zum einen natürlich den Funktionsnamen falsch geschrieben, zum anderen liefert Arraysearch beim Fund den Treffer Index im Array und nicht zwangsläufig eine 1. du musst hier also entweder prüfen ob der Rückgabewert >= 1 ist oder aber du prüfst in die andere Richtung, also ob nichts gefunden wurde, denn dann ist der Rückgabewert immer -1. Siehe dazu auch die Hilfe zur Funktion.

  • Frage/Problem bezüglich FileRead

    • misterspeed
    • 27. Juli 2011 um 14:20

    Benutz bitte den Autoit Quellcode Tag -->

    Erster Fehler ist schonmal, dass dein Funktionskopf so nicht stimmt, denn du willst ja zum einen die aktuelle hwid als auch den pfad zur Textdatei übergeben, was ja schonmal gut durchdacht ist.
    Sollte also eher so ausschaun:

    [autoit]


    Func _VergleicheHWIDs($id,$path)
    ;...
    Endfunc

    [/autoit]

    So und wo dein Problem nun noch liegt weiss ich nicht. Die beiden relevanten Funktionen wurden dir ja genannt.

    1. Datei anhand des übergebenen Pfades mit _filereadtoarray einlesen. Zuvor muss ein Array in der Funktion deklariert werden in das der Dateiinhalt dann gespeichert wird.
    2. Das deklarierte und befüllte Array nach der übergebenen id mit _arraysearch durchsuchen und den Rückgabewert der Suche auswerten.
    3. Die Funktion je nach Rückgabewert der suche entweder mit return 1 bei einem Fund oder mit return -1 bei keinem Fund verlassen. Ggf. willst du noch weitere Rückgabewerte einbauen um Fehler auswerten zu können, wie zum Beispiel eine nicht existierende Datei...

    Feritg.

  • Frage/Problem bezüglich FileRead

    • misterspeed
    • 27. Juli 2011 um 13:58
    Zitat von Gh0st

    Außerdem funktioniert die Hilfedatei auf Ubuntu nicht


    Ähm ja, aber der Browser und die deutsche Online Hilfe funktioniert ja wohl auch unter Linux. Davon ab... du verwendest eine Scriptsprache für Windows, dann solltest du doch wohl auch unter Windows programmieren und testen.

  • Frage/Problem bezüglich FileRead

    • misterspeed
    • 27. Juli 2011 um 13:44

    Versteh mich nicht falsch, aber da du dich scheinbar recht gut im Thema Reverse Engineering auskennst sollten Arrays doch wohl wirklich nichts kompliziertes für dich sein. Hast du dir die Hilfeeinträge zu den beiden genannten Funktionen überhaupt mal angesehen? Dort sind doch sogar lauffähige Beispielscripte dabei. Du hast es doch auch geschafft die FTP Funktionen und unzählige andere zu verstehen, immerhin sprichst zu von einem relativ großen Programm.

    Hier noch ein Tutorial das allgemein auf Arrays eingeht: http://wiki.autoit.de/wiki/index.php/Tutorial#Arrays

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™