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

  • Fenster aktivieren

    • alpines
    • 27. Mai 2018 um 23:53

    Das liegt daran, dass du es in der Form eines Controls ansprichst.

    Nimm als ersten Parameter den Titel des Fensters und lass die Metadaten CLASS: etc. weg.

  • Fenster aktivieren

    • alpines
    • 27. Mai 2018 um 11:02
    Zitat von autoiter

    Hallo Stefan,


    Die eckige Klammer wird nicht geschlossen.

    Der Fehler passiert nicht durch die eckigen Klammern, denn er setzt zwei runde Klammern.

    ("Titel", "Text") kann nicht evaluiert werden. Also doppelte Klammern entfernen und fertig.

  • Map Deklaration throws error

    • alpines
    • 26. Mai 2018 um 11:02
    Zitat von Slevin

    Also Map als Variable gibt es demnach gar nicht?

    Die wurden nicht verlässlich genug implementiert um sie in der Stable zu behalten also waren sie bisher nur in Betas drinne.

    Die 3.3.14.5 ist die letzte Stable, demnach sind sie dort nicht vorhanden.

    Den Haken für erledige habe ich mal für dich gesetzt.

  • Map Deklaration throws error

    • alpines
    • 26. Mai 2018 um 10:35

    Bitnugger dann kannst du aber nicht wie bei Maps die Icons mit Bezeichnern erreichen, das war ja der ursprüngliche Plan.

    Dann muss man nämlich innerhalb des Codes nicht immer die Indizes suchen sondern nimmt einfach den Bezeichner oder das Enum und fertig.

    AutoIt
    ;Dictionaryvariante
    $oImages = ObjCreate("Scripting.Dictionary")
    
    $oImages("live") = "icon-live.ico"
    $oImages("lock") = "icon-lock.ico"
    
    ConsoleWrite("$oImages(""live"") = " & $oImages("live") & @CRLF)
    ConsoleWrite("$oImages(""lock"") = " & $oImages("lock") & @CRLF)
    
    ConsoleWrite(@CRLF)
    
    ;Enum-Arrayvariante
    Global Enum $LIVE, $LOCK
    Global $aImages[2]
    
    $aImages[$LIVE] = "icon-live.ico"
    $aImages[$LOCK] = "icon-lock.ico"
    
    ConsoleWrite("$aImages[$LIVE] = " & $aImages[$LIVE] & @CRLF)
    ConsoleWrite("$aImages[$LOCK] = " & $aImages[$LOCK] & @CRLF)
    Alles anzeigen
  • Map Deklaration throws error

    • alpines
    • 26. Mai 2018 um 09:57

    Welche AutoIt-Version verwendest du denn? Maps wurden in den Stables glaube ich entfernt, du könntest stattdessen ein Enum-Array verwenden oder ein Dictionary.

  • Tastenkombination in Switch

    • alpines
    • 25. Mai 2018 um 11:44

    Registriere einfach mehrere Hotkeys auf die selbe Funktion und verwende in der Funktion das Makro @HotKeyPressed.

    Das gibt dir die gedrückte Taste zurück.

    Wenn du keine Eventbasierten Hotkeys haben möchtest kannst du auch den Zustand der Taste mit _IsPressed abfragen.

  • Frage zu WinSetOnTop

    • alpines
    • 25. Mai 2018 um 11:06

    Nein, das kannst du so pauschal nicht sagen.

    Beispiel: Wenn du Paint startest und es OnTop setzt und anschließend Paint schließt und wieder startest ist es nicht mehr OnTop weil das Fenster zerstört und komplett neu erzeugt wurde.

    In deinem SQL Programm kann es aber sein, dass das Fenster einfach nur versteckt, gesäubert und mit neuen Daten angezeigt wird.

    OnTop ist so lange konsistent wie es sichtbar ist, wenn es geschlossen/versteckt wird kannst du davon nicht mehr ausgehen.

  • Frage zu WinSetOnTop

    • alpines
    • 25. Mai 2018 um 10:35

    Du musst es nur einmal OnTop setzen, ich weiß aber nicht ob es oben bleibt wenn du es einfrierst.

    Ab und zu buggt Windows schonmal rum und man muss OnTop-Fenster selber aktivieren damit sie wieder OnTop bleiben, weil sie zwischendurch mal runtergerutscht sind.

  • Frage zu WinSetOnTop

    • alpines
    • 25. Mai 2018 um 10:25

    WinSetOnTop wird es einfach oben halten, ich weiß allerdings nicht was passiert wenn es einfriert also kannst du ja vorher einfach es OnTop setzen und warten bis du "Keine Rückmeldung" liest, dann solange warten bis es weg ist und wieder nochmal zur Sicherheit mit WinActivate aktivieren, dann sollte es ganz sicher im Vordergrund sein.

  • Frage zu WinSetOnTop

    • alpines
    • 25. Mai 2018 um 10:16
    Zitat von Springstil

    Ist das ein Problem für WinSetOnTop ? Und ist das auch die Funktion die das fenster solange offen bzw im Vordergrund lässt bis es beendet wird?

    Ich schätze mal, wenn du das WinSetOnTop ausführst nachdem es eingefroren ist wird es nachdem es wieder läuft erst im Vordergrund sein.

    Also setz das WinSetOnTop vorher und prüf zur Sicherheit einfach den Fenstertitel (da müsste das Keine Rückmeldung) ja auftauchen.

    Wenn das "Keine Rückmeldung" wieder weg ist kannst du ja das Fenster aktivieren und hast es wieder laufend und aktiv im Vordergrund (falls es durch einen Bug oder so überdeckt werden sollte, was passieren kann!!)

    WinSetOnTop frierst und setzt die Z-Position des Fensters auf 0, d.h. es ist das oberste Fenster und kann von anderen nicht verdeckt werden, es zwingt es aber nicht offen zu bleiben.

    Du kannst das Fenster immer noch schließen oder minimieren.

  • Deutsche Hilfe auf 3.3.14.5 updaten - mitmachen

    • alpines
    • 24. Mai 2018 um 21:25
    Zitat von autoiter

    Ich habe heute mal die meisten Excel-Archive geladen

    Bitte (auch wenn es nie dazu kommt) immer einen neuen Beitrag erstellen und die heruntergeladenen Dateien reservieren!

    Es soll hier niemand unnötig Arbeit verrichten wenn zwei Leute das selbe Paket übersetzen.

    Nachdem man mit den Dateien fertig ist kann man sie anhängen und im Edit Tweaky markieren, der kriegt dann die Benachrichtigung.

  • C# / VB .NET DLLs erstellen und in AutoIt verwenden

    • alpines
    • 22. Mai 2018 um 23:45

    Naja, als erstbesten Workaround würde mir folgendes einfallen: FileCopy in deinem AutoIt-Skript einfach immer die DLL in das Includeverzeichnis.

    Denn dort versucht er sie ja zu lokalisieren und wenn du eine neue Version der DLL compiled hast musst du es nicht manuell moven.

    Oder versuch mal die DLLs die du über NuGet ziehst manuell als Verweis hinzuzufügen, vielleicht klappt es ja so.

    Bei mir hats nicht funktioniert.

  • InetRead bzw. Inetget mit HTTPS

    • alpines
    • 22. Mai 2018 um 13:09
    Zitat von Racer

    hatte ich schon mehr Erfolg, zumindest unter Windows 7. Unter WinPE läuft es leider nicht so gut und ich bekomme immer nur 0 heraus, anstatt des gewüschten Datei.

    Wird denn überhaupt eine Verbindung aufgebaut? Ist die Assembly von WinHttp, also die DLL, auf WinPE standardmäßig vorhanden?

    Zum Thema ?: (ternäre Operatoren):

    Es ist nur die halbe Wahrheit, wenn man es die Kurzschriebweise von If-Blöcken nennt.

    Viel mehr ist es ein inline-If welches den Wert zwischen ? : zurückgibt wenn die Bedingung true ist und den Wert nach dem : zurückgibt wenn die Bedingung false ist.

    Das mag jetzt vielleicht identisch klingen aber Zeilen wie 1 = 1 ? Bla() : Blubb() sind nicht erlaubt.

    Ein If-Block lässt Befehle ausführen, ein ternärer Operator soll dazu genutzt werden unnötige If-Blöcke elegant zu verbergen wie in diesem Beispiel mit $bSSL.

  • Button in Webanwendung drücken

    • alpines
    • 22. Mai 2018 um 13:03

    Nun ja ohne weitere Infos werden wir da nicht viel machen können.

    Oscar oder BugFix kannst du das bitte mal nach H&Ü moven? Das hat hier in Tutorials nichts verloren.

  • C# / VB .NET DLLs erstellen und in AutoIt verwenden

    • alpines
    • 22. Mai 2018 um 12:55

    Das liegt daran, dass der Interpreter die Datei im Includeverzeichnis von AutoIt vermutet.

    Da kann man glaube ich nichts machen, aber wenn man die Exe compiled und anschließend ausführt, wird die Meldung nicht geschmissen, da im aktuellen WorkingDir danach gesucht wird.

    Siehe hier auf dem Bild, ausgeführt in SciTE oder im Explorer als Script: [Blockierte Grafik: https://i.imgur.com/Y3QbvEX.png]

    Und ausgeführt als Kompilat: [Blockierte Grafik: https://i.imgur.com/3milMAd.png]

  • Button in Webanwendung drücken

    • alpines
    • 22. Mai 2018 um 12:19

    Identifizier doch deinen Button einfach über das Attribut title? Und wenn das nicht reicht nimm halt noch andere Attribute dazu.

    Solltest du mit dem Ausschnitt den Button auch nicht finden, dann kann es sein, dass dieser in einem <iframe>-Objekt liegt, dazu müssen wir aber wissen um welche Seite es sich handelt um den Quellcode analysieren zu können.

    AutoIt
    $oButtonColl = _IETagNameGetCollection($oIE, "button")
    
    For $oButton In $oButtonColl
        If $oButton.title = "Suche" Then
            ConsoleWrite("Button gefunden mit title=Suche" & @CRLF)
        EndIf
    Next
  • Verarbeitung von Daten aus einer .ini Datei

    • alpines
    • 21. Mai 2018 um 16:46

    Schau dir mal das Beispiel an wie ich 2D-Arrays in einem 1D-Array gespeichert habe.

    Du kannst ja erstmal in einem Rutsch alle Sektionen in ein 1D-Array einlesen und nebenbei beachten wie groß die größte Sektion ist.

    Nachdem du alle eingelesen hast erzeugst du ein neues 3D-Array und schiebst aus dem pseudo-3D-Array in das neue.

    Oder du schaust bei jeder Sektion ob die 2. Dimension groß genug ist und wenn nicht, dann redimmen und füllen.

    So redimst du im Mittel weniger (je nach Anordnung und Anzahl der Sektionen).

  • Verarbeitung von Daten aus einer .ini Datei

    • alpines
    • 21. Mai 2018 um 16:36
    Zitat von nuts

    Int($a_sectionNames[0])

    Das ist quatsch, du brauchst den Inhalt nicht expliziert zu einem Int zu konvertieren da er als dieser schon vorliegt.

    Zitat von nuts

    If $i_max > $i_limit-1 then ; if section has more than 100 entrys => resize 3D Array
    $s_limit=$i_max+1
    ReDim $a_return[Int($a_sectionNames[0])][$i_limit][2]
    endif

    Auch keine gute Idee, wenn du die 100 Einträge geknackt hast redimst du jedes einzelne mal.

    Das ist von der Semantik her inkonsistent, redim lieber jedes Mal (langsam) oder zähl erstmal wie oft du Redimmen musst und redim nur ein einziges mal.

    Alternativ kannst du auch einfach ein 2D-Array in ein 1D-Array stecken und es ansprechen.

    Nur die direkte Zuweisung der Werte innerhalb des 2D-Arrays funktioniert dann nicht, da der Interpreter sich dagegen weigert (error: Statement cannot be just an expression."

    Hab das mal angehangen.

    Dateien

    _ArrayDisplayTree.rar 2,03 kB – 503 Downloads
  • Verarbeitung von Daten aus einer .ini Datei

    • alpines
    • 21. Mai 2018 um 15:11

    Genau, so kannst du das machen. Du solltest noch im [n][m][0] vielleicht den Sektionsnamen speichern wenn du den noch brauchst.

  • Verarbeitung von Daten aus einer .ini Datei

    • alpines
    • 21. Mai 2018 um 13:53

    Wenn du 3D-Arrays nicht verstehst dann überleg dir einfach eine Analogie dazu, beispielsweise eien Excel-Datei.

    Du hast mehrere Tabellenseiten und die Tabellen selbst sind die 2D-Arrays.

    In diesem Fall wäre jede Seite eine Sektion und jede Zeile/Spalte ein Key/Value-Pair.

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™