_MuteActiveWindow - Sound vom aktiven Fenster stumm schalten.

  • Hallo Bitnugger

    Sorry, das habe ich überlesen. Nur die Spekulationen über Fehler in neuen Versionen halte ich aber für fehl am Platz, da hier nichts gegen AutoIt gemacht wird und keine Anomalie ausgenutzt wird.

    Grüße autoiter

  • Das erste Bild zeigt, wie es NICHT gemacht werden sollte... und wenn Scite4AutoIt3 benutzt wird, so wie bei mir, wird das Script durch AU3Check beendet, weil die Variable $sTitle nicht deklariert wurde.

    Das zweite Bild zeigt, wie es ohne Probleme funktioniert...


    .......

    Super vielen Dank für die Erklärung.

    Hast du evtl. ein paar gute Links wo ich das mit den DLL Calls die du machst etc nachlesen kann?

    Oder allgemein etwas wo ich das evtl. gut lernen kann?

    Ich will mir ja nicht alles von euch 3 erklären lassen müssen. :D

    Code
    If IsArray($aPos) Then ; Hä???
    If $text <> "" Then Return "[ClassNN:" & StringFormat("%19s", $iCurrentClass & $iCurrentCount) & "]"
    EndIf

    Da ich nicht alles aus der Funktion verstanden habe (z.b wozu das %19s ist ???) habe ich die Funktion so gestaltet wie es bei mir die richtigen Ergebnisse produziert hat.

    Somit war es z.B mit Chrome kein Problem und ich habe die Funktion hauptsächlich für Spiele gestaltet, da ich sehr viel "Battle Royale" Spiele und in den Warteschlangen immer alle Rumballern und mich das nervt.

    Deine Funktion ist da natürlich besser vor allem gefällt es mir, ich verstehe auch zu großen Teilen was passiert aber trotzdem kann ich nur wenig damit anfangen, was mich stört.

    Mal zum Thema IsDeclared Bitnugger  autoiter  alpines (Ich feier eure Diskussion übrigens.)

    Mir hat die Funktion bisher sehr gut gefallen. Z.B bei meiner Messagebox habe ich einen Timer der entweder ein Autoclose Timer oder ein Button Timer ist und ich frage später einfach ab, ob der Timeout Button deklariert ist oder nicht. Somit bestimme ich ob der eine oder andere Timer ausgeführt wird, was ich aber mit sehr vielen Sachen gemacht habe, da es mir irgendwie immer eine Variable oder zwei erspart hat.

    Zum Thema Hotkeys:

    Ich poste mal das Script wo ich meine Hotkeys verwende, bedenkt dabei bitte das alle Funktionen hier nur hingeklatscht sind da ich sie gerade in diesem Moment haben wollte.



    Nehmen wir als Beispiel mal die Func SwitchSoundDevice($SoundDevice = "")

    Die rufe ich normal per Hotkey auf, dann schaut mein Script welches Audio Device gerade Aktiv ist und wechselt dann zum anderen.

    Außer wenn ich den PC starte, da möchte ich gezielt die Lautsprecher auswählen.

    Genau so bei Func AppMinMax($IsMinimized)

    Im Normalfall möchte ich eine Anwendung minimieren die im Vordergrund läuft, diese möchte ich dann später mit dem selben Hotkey wieder aktivieren.
    Außer in manchen Fällen. Wie wenn ich mein Sound Device wechsel, oder mir die Steam Friends anzeigen lasse.

    Wie soll ich das sonst lösen?


    Mal zu mir und meinen "Scripting Techniken".

    Ich arbeite immer noch recht rudimentär, was wohl daran liegt, das ich aus der Batch Szene stamme, wo die Funktionen die ich wollte nicht mehr zur Verfügung standen und eigtl. alle Dos Tools nicht mehr so auf Windows 7 + laufen.

    Die Anleitungen waren schrecklich und kaum ein Beispiel lies sich Aufgrund oben genannter Punkte mehr reproduzieren.

    Trotzdem habe ich es geschafft ein Batch Script zu schreiben das mindestens 10.000 mal in 2016 herunter geladen wurde.

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Ich scripte also seit Anfang 2016.

    Das Problem ist ich arbeite auch genau so in Autoit,

    Mir ist die Komplexität von Autoit erst später aufgefallen und ich fange seit 2-3 Wochen an das zu nutzen.

    Das verstehen der Funktionen stellt an sich kein Problem dar, solange ich entweder eine gute Dokumentation habe oder ich die Ergebnisse Schritt für Schritt nachvollziehen kann.

    Ich habe das Gefühl, das ich alleine das scripten an sich umstellen muss, ich arbeite noch immer so:

    Script so weit schreiben wie ich mir sicher bin die richtigen Ergebnisse zu erhalten und danach: Script speichern - > Script mit doppel click öffnen:
    Stimm das Ergebnis? Nein? Letzte Variable via MessageBox checken und Fehler suchen.

    Ich glaube der ganze Ansatz stimmt da schon nicht.

  • Hast du evtl. ein paar gute Links wo ich das mit den DLL Calls die du machst etc nachlesen kann?

    Ich wurde durch das exellente Tutorial von BugFix angefixt und habe dadurch sehr viel zu diesem Thema gelernt: Arbeiten mit Dll's in AutoIt

    Allerdings würde ich dir bei deinem Wissenstand empfehlen, dich erst einmal mit den elementaren Themen zu befassen, z.B. mit Arrays (Was ist ein Array?) und den internen Funktionen (die ohne Unterstrich beginnen) in AutoIt... z.B. StringFormat, GUICtrlSetPos, ControlGetHandle, Switch, Select, usw.

    z.b wozu das %19s ist ?

    %s - Platzhalter bez. Formatstring für einen String (oder eine String-Variable)

    %19s - wie %s, jedoch wird der String mit voranstehenden Leerzeichen bis auf 19 Zeichen aufgefüllt, wenn er kürzer ist - du kannst auch sagen, die Standard-Ausrichtung ist rechtsbündig.
    %-19s - wie %19s, jedoch wird der String am Ende mit Leerzeichen bis auf 19 Zeichen aufgefüllt, wenn er kürzer ist - die Ausrichtung ist dann also linksbündig.

    %i - Integer (Ganzzahl)

    %3i - wie %i, jedoch wird die Zahl mit voranstehenden Leerzeichen bis auf 3 Zeichen aufgefüllt...

    %03i - wie %3i, jedoch wird anstelle der Leerzeichen mit Nullen aufgefüllt.

    %f - Fließkommazahl, z.B. 3.140000

    %.2f - wie %f, jedoch nur mit 2 Nachkommastellen... 3.14

    ...und noch zig andere... steht aber alles auch in der Hilfe zu StringFormat... ist übrigens eine meiner Lieblingsfunktionen. ;)

    Wie soll ich das sonst lösen?

    Anstelle des If Not IsDeclared(...) deklarierst du $SoundDevice in der Funktion als statische Variable, denn diese behalten ihren Wert, nachdem die Funktion verlassen wird.

    Das nur mal kurz zum Verständnis, wie es auch ohne IsDeclared geht. Für dein Script schau dir besser das Beispiel weiter unten an...

    pasted-from-clipboard.png

    Ich glaube der ganze Ansatz stimmt da schon nicht.

    Dieses Gefühl wird dich sicher noch einige Zeit begleiten... es dauert halt seine Zeit, bis man einen eigenen Stil entwickelt hat, mit dem man zufrieden ist und der vorzeigbar ist. Ich habe AutoIt gelernt, indem ich mir immer wieder und wieder und wieder die Scripte von den Usern angeschaut habe, die sehr oft heruntergeladen wurden, auch im englischen Forum. Wenn ich dann vor böhmischen Dörfern stand, habe ich die AutoIt-Hilfe oder Tante-Google gefragt... zig mal irgendwas geändert/probiert, um zu sehen wie sich das auswirkt... und nur wenn ich absolut nicht weiter kam, dann auch mal hier im Forum gefragt. Ich frage ungern, denn selbst erarbeitete Wege behält man wesentlich länger.

    Bez. Stil... hier mal auf die Schnelle ein Beispiel (das nicht funktioniert), wie das bei mir mit HotKeys und den Funktionen in etwa aussehen würde... du wirst hier aber sicher einige Stellen findest, die du gut gebrauchen kannst. ;)

    Zu deinem Video... wirklich fein... mein bester Freud ist der geborene Zocker... er befasst sich auch gerne mit solchen Sachen. ;)

    4 Mal editiert, zuletzt von Bitnugger (23. Juli 2018 um 23:18)