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

Beiträge von alpines

  • Basepointer auslesen mit NomadMemory.au3 oder WinAPI.au3

    • alpines
    • 8. März 2018 um 21:45
    Zitat von TheDeath24

    AutoIT

    AutoIt, nicht "AutoIT".

    Da du hier wirklich keine Schandtaten mit Speichermanipulation vor hast helfe ich dir gerne (sowas wird meistens für Bots verwendet).

    Und Logitech bietet hier auch keine API an wie z.B. für Tastaturen mit dem LCD. G15 oder wie die heißen.

    Soweit ich mich noch erinnern kann muss der 1. Index im Offset-Array für die NomadMemory.au3 0 sein.

    Die Base-Address sieht alles andere als korrekt aus. Eine Adresse die mit 0x7F anfängt? Das ist am äußerstem/halben Spektrum eines Adressierungsbereich.

    Vermutlich diente es nur zum auffüllen, ich schätze mal 0xF73117D9C8 wäre richtig (ich kann mich irren).

    Aber LCore.exe scheint eine 64-Bit Anwendung zu sein, denn 32-Bit Anwendungen adressieren normalerweise max. bis 0xFF FF FF FF bzw. 0x7F FF FF FF (4 Bytes = 32-Bit).

    Deine Adresse sprengt allerdings diesen Rahmen (auch ohne die 0x7F) und folglich kann dein Script so oder so nicht funktionieren, da die NomadMemory.au3 glaube ich keien 64-Bit Pointer unterstützt (funktioniert das überhaupt wenn man AutoIt 32-Bit compiled? Den Präprozessor hast du ja auch gesetzt).

    Du kannst uns ja mal den Screenshot von CE zeigen mit Basepointer sowie Offsets. Aber du wirst vermutlich so oder so eine andere UDF brauchen.

    Du könntest aber auch stattdessen _WinAPI_ReadProcessMemory verwenden.

    Du liest den Basepointer mit der Funktion ein. Auf das Ergebnis davon addierst du den 1. Offset (keine 0 dieses mal) und liest an der Stelle Ergebnis + Offset, und das immer so weiter bis du alle Offsets abgearbeitet hast. (Achte aber dabei auf die Adressgröße)

  • FF.au3 Seiteninhalt auslesen

    • alpines
    • 8. März 2018 um 13:51

    Wenn deine Objekte in Frames liegen wirst du da mit _IEGetObjById (auf die IE-Instanz) nicht rankommen.

    Du könntest das src-Attribut des Frames direkt aufrufen und dort dann deine _IE*-Funktionen anwenden (sofern die in frames liegen, egal ob iframe oder frame/frameset).

    Ansonsten musst du mit FrameCollections arbeiten und das ist ziemlich nervig.

  • FF.au3 Seiteninhalt auslesen

    • alpines
    • 8. März 2018 um 11:21

    Liegt das Element zufälligerweise in einem <iframe>-Tag?

  • GDI+, Kleiner Farbverlauf

    • alpines
    • 6. März 2018 um 17:36
    Zitat von Snake Plissken

    Die Sinusfunktion von AutoIT wirft bei sin(1) 0.841470984807897 und der Taschenrechner 0,017452 raus. Nur bei sin(0) sind beide gleich????

    Das liegt daran, dass AutoIt in Radianten rechnet und dein Taschenrechner auf Grad eingestellt ist.

    Allgemeint gilt: sin(1 Radiant) = sin (1 Grad * pi/180)

  • FF.au3 Seiteninhalt auslesen

    • alpines
    • 6. März 2018 um 17:14
    Zitat von AutoTim

    Zurück bekomme ich mit _FFReadHTML den Qualltext. Das Problem hierbei ist, das der Quelltext (rechtsklick Seitenquelltext anzeigen) nicht das gleiche ist, als würde ich Ihn über den Firefox Inspektor auslesen.

    Der FF Inspektor enthällt alle Informationen. Der Quelltext fast nichts brauchbares.

    Das liegt daran, dass du im Browser den DOM-Explorer verwendest und das ist der bereits verarbeitete Code.

  • Treeview Icons einzeln ändern

    • alpines
    • 5. März 2018 um 17:47
    Zitat von mirko2002

    Aber genau dafür habe ich ja ein ElseIf verwendet.... ich raffs nicht

    If-Verzweigungen werden von oben nach unten abgearbeitet. Wenn du willst, dass er zuerst das letztere prüft, dann setz es davor.

    Dann musst du aber noch prüfen ob alte korrekte Fälle in die neu obeneingesetzt Bedingung reinspringen.

  • GUI Labels als Array ansprechen

    • alpines
    • 5. März 2018 um 15:51

    Wieso löst du das ganze denn nicht mit einer For-Schleife?

    Du kannst doch dann, wenn die die Labelcontrols in einem Array erstellst dann dein Ergebnisarray iterieren und GUICtrlSetData zum Setzen der Ergbenisse verwenden.

    AutoIt
    Local $aControls[2] = [$hLabel1, $hLabel2]
    
    For $i = 0 To UBound($aControls) - 1
        $iErgebnis = _DoSomething()
    
        GUICtrlSetData($aControls[$i], "Ergebnis: " & $iErgebnis)
    Next
  • Shutdown wenn Notebook in Akku Betrieb

    • alpines
    • 5. März 2018 um 14:56

    Es ist ein wirklich, wirklich, unverschämt kleines Script. Probier das halt mal aus und berichte:

    Und das hier ist nur die sichere Variante, ohne ginge es in vier Zeilen.

    AutoIt
    #RequireAdmin
    #include <WinAPISys.au3>
    
    While Sleep(1000)
        Local $aInfo = _WinAPI_GetSystemPowerStatus()
    
        If UBound($aInfo) and Not $aInfo[0] Then ExitLoop
    WEnd
    
    Shutdown(1)

    Z.B. so

    AutoIt
    #include <WinAPISys.au3>
    While _WinAPI_GetSystemPowerStatus()[0] and Sleep(1000)
    WEnd
    Shutdown(1)

    Das könnte man noch kleiner machen (drei) aber ich glaube das was ich sagen wollte ist klar geworden.

  • Checkbox im IE

    • alpines
    • 5. März 2018 um 14:43
    Zitat von sugus

    Nach etlichem suchen und Probieren konnte ich es selber Lösen.

    Ein Blick in die Hilfe hätte dir sofort klar gemacht was am Anfang schief lief.

    Wahlloses herumprobieren von Parametern und Funktionen wird dich nicht immer an dein Ziel bringen.

    Zitat von _IEFormElementCheckboxSelect

    $oObject Object variable of an InternetExplorer.Application, Form object

    Ein Form-Objekt ist ein <form>-Objekt und keine Elemente die innerhalb dieser Form platziert wurden.

    Mit _IEGetObjById und einem _IEAction($oButton, "click") hätte das von Anfang an funktioniert.

    _IEFormElementCheckBoxSelect hätte nur das Form-Element gebraucht und dann hättest du mit den Id/Name Parametern auch den Tick setzen können.

    Das _IELoadWait kannst du dir übrigens sparen (besonders den 2. Parameter), da _IECreate bereits selbst _IELoadWait verwendet (es sei denn du sagst ihm er soll es nicht machen).

    Zitat von _IELoadWait

    Several IE.au3 functions call _IELoadWait() automatically (e.g. _IECreate(), _IENavigate() etc.).
    Most functions that do this also allow you to turn this off with a $fWait parameter if you do not want the wait or if you want to call it yourself.

  • Wie organisiert ihr eure AutoIt-Projektverzeichnisse?

    • alpines
    • 4. März 2018 um 19:49

    Mit diesem Thread würde ich gerne eine Diskussion / einen Ideenaustausch anstoßen und würde von jedem Programmierer (egal ob gut oder schlecht) hören, wie er seine Projektverzeichnisse organisiert.

    Hintergrund:

    Ich arbeite gerade an einem etwas größeren Projekt und habe nach exzessiven Codeabenden (wo einem die Ideen nur so aus einem raussprudeln) mein Projekt praktisch überhaupt nicht organisiert.

    Meine Hauptscriptdatei ist bisher 70 KB groß mit etwa 1600 Zeilen (keine Binärressourcen enthalten) und bis ich SciTE Jump entdeckt habe verbrachte ich rund 20% der Zeit nur mit Scrollen.

    Ich habe lediglich 4 eigene Includes eingebunden (6, 2, 1, 5 KB) die ich in einem Verzeichnis halte, dass includes heißt.

    Jetzt würde ich gerne demnächst mal alles ein bisschen auseinanderziehen um das Script ein wenig übersichtlicher zu machen.

    Beispielsweise sind 9 WM_*-Funktionen enthalten die ich beispielsweise super in eine eigene Datei namens (WM.au3) outsourcen könnte.

    Jetzt würde ich gerne ein paar Ideen sammeln um dann nachher eine Entscheidung zu fällen.

    Also, dann lasst mal von euch hören wie ihr eure Projektverzeichnisse organisiert.

    Teilt ihr Ressourcen in unterschiedliche Ordner auf, verwendet ihr Include-Helper-Includes, packt ihr alles in ein Verzeichnis, verwendet ihr eine IDE?

    Hoffentlich gibts was, was der eine oder andere noch nicht weiß und so dazulernt :)

  • Such Sources zu einem bestimmten Tutorial von AutoIT96

    • alpines
    • 4. März 2018 um 19:35

    Seit dem Forenumzug funktionieren die alten Links nicht mehr und müssen angepasst werden.

    Mit einem HTML-Sniffer bekommst du raus wohin du redirectet wirst: https://autoit.de/index.php?page=Thread&threadID=27174

    Jetzt musst du es nur noch an das neue Format anpassen: GDI+ Schwarzes Loch & Maus Text Verfolger

    Und schon hast du deinen Thread :)

    Oscar move den Thread doch mal bitte nach Talk/OT, das hier ist kein Tutorial.

  • Treeview Icons einzeln ändern

    • alpines
    • 3. März 2018 um 11:30
    Zitat von Peter S. Taler

    Da werden If Schleifen, case Bedingungen usw. eingebaut - jeder wundert sich warum ..."es nicht funktioniert".... aber keiner kommt auf die Idee mal auf die billig Art zu testen ob sich die Bedingungen auch erfüllen. Anstelle großartigen Code zusammenzupasten, dessen Funktion dann bezweifelt wird, mal eine schnöde msgbox einbauen - und nachsehen ob sich die Abfragen auch erfüllen (können). Danach kann mann dann über die Funktion als solches sprechen. Auch sollte man, anhand der Beispiele in der Hilfe, probieren ob die Funktion kann was man erwartet.

    Ist in Ordnung, aber für die meisten Fälle ist ConsoleWrite wohl eher der way-to-go.

    In der Konsole werden die Ergebnisse schön zusammengetragen und man muss sie sich nicht merken.

    MsgBox ist gut, wenn man das Script an bestimmten Stellen wirklich unterbrechen möchte und es nicht weiter interpretiert werden soll (bis zum Buttonclick).

  • Shutdown wenn Notebook in Akku Betrieb

    • alpines
    • 2. März 2018 um 13:20

    https://www.autoitscript.com/autoit3/docs/l…PowerStatus.htm ist das was du brauchst.

    Eine While-Schleife die alle 5 Sekunden überprüft ob das Gerät lädt und dann Shutdown() ausführt wirst du doch sicherlich selber hinkriegen.

  • SpeedTest

    • alpines
    • 1. März 2018 um 23:31

    Ich vermute, dass die Geschwindigkeit über die Karte größer ist, da dort der Packetoverhead enthalten ist (IPv4, HTTP, ...) wohingegen im InetGetInfo wirklich nur den Dateiinhalt zählt.

    Bei der Netzwerkabfrage hast du aber vermutlich das Problem, dass wenn mal was mittels LAN weggeschickt wird (an einen anderen Rechner), dass es dort in der Statistik ebenfalls auftaucht.

    Übrigens brauchst du keine Screenshots zu croppen, wenn du von einem Windows Fenster einen Screenshot willst mach das ganze mit ALT+Print und füg' es hier im Editor einfach mit STRG+V ein.

  • SpeedTest

    • alpines
    • 1. März 2018 um 23:15

    Ne, absolut nicht fraglich. Du lädst ja keine 5 MB Datei, sondern thinkbroadband bietet bis zu 1GB Daten an.

    TimerInit, Download starten, TimerDiff.

    Den Download kannst du sogar mit InetGet und background = 0 realisieren, dann kannst du währenddessen immer mit TimerDiff die Geschwindigkeit anzeigen lassen.

    Statt InetGetInfo kannst du auch FileGetSize nutzen:

    Allgemein gilt, desto länger der Download dauert, desto präziser wird die Geschwindigkeit, weil diese erstmal aufgebaut werden muss.

    AutoIt
    $hInetGet = InetGet("http://ipv4.download.thinkbroadband.com/1GB.zip", "test.zip", 1, 1)
    $hTimer = TimerInit()
    
    Do
        $iSize = Round(InetGetInfo($hInetGet, 0) / 1024 / 1024, 0)
    
        ToolTip("Downloaded: " & $iSize & " MiB" & @CRLF & "Time passed: " & Round(TimerDiff($hTimer) / 1000, 2) & " s" & @CRLF & _
                "Speed: " & Round($iSize / (TimerDiff($hTimer) / 1000), 2) & " MiB/s")
    Until TimerDiff($hTimer) >= 5000 ;5 Sekunden Test
  • SpeedTest

    • alpines
    • 1. März 2018 um 22:52

    Datei selber runterladen und Zeit messen...

  • SpeedTest

    • alpines
    • 1. März 2018 um 13:20

    Was du auch noch testen könntest (die Idee kam mir vorhin): Lad an dich selbst hoch.

    Der Download sollte bei fast jedem hausüblichen Anschluss immer signifikant größer als dein Download sein und vielleicht verfälscht dein Download der Uploaddaten deine Uploadwerte nicht sonderlich. Ein Versuch ist es auf alle Fälle mal wert, denn dann brauchst du auch keinen FileHoster. Einfach über die globale IP verbinden und dabei die Portfreigabe nicht vergessen.

  • SpeedTest

    • alpines
    • 28. Februar 2018 um 23:57

    Ja, das sollte funktionieren, wenn du auf den Weg dorthin keine Beschränkung hast.

    Liegt der Server beispielsweise in Mexiko, dann würdest du trotz 10 Mb/s und 50 Mb/s Download nur wenige Kilobyte erreichen, weil die Distanz groß ist.

  • SpeedTest

    • alpines
    • 28. Februar 2018 um 23:12
    Zitat von lloid

    Diese Aussage verstehe ich nicht.. Wäre das dann nicht ein Download aus meiner Sicht??

    Oh ja sorry, ich meinte natürlich Daten senden. Ein Pastebin-Paste z.B. aber die haben ja Recaptcha und verbieten es vermutlich sowieso in ihren AGBs.

    Zitat von lloid

    Allerdings weiss ich nicht, wie man das umsetzt. Die filehoster, die ich kenne, sind eher allergisch auf Ablagen per Script.

    Dazu kannst du WinHttp verwenden. Dafür gibts einen AutoItWrapper (WinHttp UDF googlen) und schon Posts mit Scripten wie man Dateien hochlädt.

    So nebenbei: Warum willst du denn ein Speedtestprogramm schreiben? Es gibt doch genug Seiten im Netz die das anbieten (inkl. Server).

  • SpeedTest

    • alpines
    • 28. Februar 2018 um 22:57

    Du müsstest einen Filehoster finden der dir gestattet permanent mittels Skript Daten zu schreiben.

    Ansonsten kannst du testweise mal versuchen große Seiten abzurufen und dann die Geschwindigkeit zu mitteln.

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™