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

Beiträge von xTcisloVe

  • TreeView Farbe von Item und Pfad nachträglich ändern.

    • xTcisloVe
    • 27. August 2018 um 20:59
    Zitat von alpines

    Du musst während du das TreeView aufbaust und die Duplikate raussuchst auch den aktuellen Standpunkt merken um das richtige Item zu färben.

    Mit StringInStr klappt das so einfach nicht.

    Färb sie nicht erst im Nachhinein sondern such die Duplikate raus und während du das Treeview erzeugst färbst du sie gleichzeitig mit indem du prüfst ob der aktuelle Zweig dem Dateipfad entspricht.

    Es ist wesentlich einfacher während der Konstruktion alles zu markieren als im Nachhinein.

    Keine Ahnung wie ich das machen soll, darum geht es ja.

    Die Funktion baut ja erst alle Ordner auf und dann alle Files.

    Ich wollte einfach den Handle abgreifen mit GUICtrlCreateDummy() aber das ging nur wenn ich jede Datei inklusive Pfad einzeln erstellen würde im Treeview.

    Habe also keinen Plan wie ich das umsetzen soll.

    Edit: Die Duplikate kann ich mir mit _FindDuplicates ja jederzeit holen, darin wäre ja jeder ordner und jede datei die Rot sein muss exakt aufgelistet.
    Ich könnte die Funktion ja auch nur Dateinamen ausgeben lassen, aber dann weiß ich halt nicht wie ich den dazugehörigen Pfad rot färbe.

    Ich kann ja durch die Files loopen und den dazugehörigen tree mit

    _GUICtrlTreeView_FindItem() und _GUICtrlTreeView_GetTree()

    anzeigen lassen.

    Moment vlt klappt das dann mit _GUICtrlTreeView_SetTextColor ?

    Muss ich testen

  • TreeView Farbe von Item und Pfad nachträglich ändern.

    • xTcisloVe
    • 27. August 2018 um 20:25
    Zitat von alpines

    Und was genau kriegst du an der Färbung nicht hin? GUICtrlSetColor funktioniert ja ohne Probleme. Weißt du nicht wie du erkennen sollst ob sie schon doppelt vorkommen oder wo liegt das Problem?

    Ich will ja wirklich nur die doppelten rot Färben, dazu muss aber ja auch der dazugehörige Tree rot werden, alles andere soll grün sein.

    Ich weiß also wie ich anhand meiner _FindDuplicates Funktion das File rot färbe, dann bleibt aber die dazugehörige Ordnersturktur grün.

    Und StringinStr kann ich da ja nicht nehmen da z.B der Ordner "Models" in allen Ordnern vorkommen kann aber nicht überall rot sein soll.

    Hoffe man versteht was ich meine :D

  • TreeView Farbe von Item und Pfad nachträglich ändern.

    • xTcisloVe
    • 27. August 2018 um 20:17

    Hier mal ein Beispiel.

    Zuerst wie mein Tree aussieht, und wenn man den GUI schließt wird ein Array angezeigt mit den zu färbenden items.

    Original Beispiel: https://mega.nz/#!nJATlCaJ!fAB…hR-RY_GBt_5Vng8

    Kleines Beispiel im Anhang.

    Dateien

    Beispiel.rar 1,07 MB – 322 Downloads
  • TreeView Farbe von Item und Pfad nachträglich ändern.

    • xTcisloVe
    • 27. August 2018 um 19:41
    Zitat von alpines

    Und wie schaut deine Treeview aus und welche Teile davon sollen gefäbrt werden?

    Hast du im Treeview für jeden Unterordner einen anderen Zweig?

    treeview.PNG

    Das gewollte Ergebnis siehst du oben im Spoiler.

  • TreeView Farbe von Item und Pfad nachträglich ändern.

    • xTcisloVe
    • 27. August 2018 um 19:34
    Zitat von alpines

    Du kannst Texte innerhalb von Listviews nicht ohne weiteres mehrfarbig machen, nur einfarbig.

    Will ich ja auch nicht, es ist ja auch TreeView, und da kann ich ja jedes einzelne, Item einfärben. Ich kann ja auch immer ein anderes Icon setzen. Und auch die Farbe.

  • TreeView Farbe von Item und Pfad nachträglich ändern.

    • xTcisloVe
    • 27. August 2018 um 18:41

    Hallo,

    ich nutze folgende Funktion um einen Treeview zu erstellen.

    Code
    Func _CreatePath($sPath, $idParent)
        Local $aFolder, $aFiles, $idItem
        If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
        $aFolder = _FileListToArray($sPath, '*', $FLTA_FOLDERS)
        If Not @error Then
            For $i = 1 To $aFolder[0]
                $idItem = GUICtrlCreateTreeViewItem($aFolder[$i], $idParent)
                _CreatePath($sPath & $aFolder[$i], $idItem)
                GUICtrlSetColor(-1, 0x098902)
            Next
        EndIf
        $aFiles = _FileListToArray($sPath, '*', $FLTA_FILES)
        If @error Then Return
        For $i = 1 To $aFiles[0]
            $idItem = GUICtrlCreateTreeViewItem($aFiles[$i], $idParent)
            GUICtrlSetColor(-1, 0x098902)
        Next
    EndFunc
    Alles anzeigen

    Damit erstelle ich einen TreeView z.B davon: (Edit, gefärbt für gewünschtes Ergebnis)

    Spoiler anzeigen

    Folder 1\

    characters\models\geralt\head\model\eye__geralt_d01.xbm

    characters\models\geralt\head\model\h_01_mg__geralt_d01.xbm

    characters\models\geralt\head\model\h_01_mg__geralt_d02.xbm

    characters\models\geralt\head\model\h_01_mg__geralt_n01.xbm

    characters\models\geralt\head\model\h_01_mg__geralt_n02.xbm

    characters\models\geralt\head\model\h_01_mg__geralt_tattoo_d01.xbm

    characters\models\geralt\head\model\ep1_mark\h_01_mg__geralt_d01_mark.xbm

    characters\models\geralt\head\model\ep1_mark\h_01_mg__geralt_d01_mark_tattoo.xbm

    characters\models\geralt\head\model\ep1_mark\h_01_mg__geralt_d02_mark.xbm

    characters\models\geralt\body\model\body_01_mg__geralt_d01.xbm

    Folder 2\

    characters\models\geralt\head\model\eye__geralt_d01.xbm

    characters\models\geralt\head\model\h_01_mg__geralt_d01.xbm

    characters\models\geralt\head\model\h_01_mg__geralt_d02.xbm

    characters\models\geralt\head\model\h_01_mg__geralt_n01.xbm

    characters\models\geralt\head\model\h_01_mg__geralt_n02.xbm

    characters\models\geralt\head\model\h_01_mg__geralt_tattoo_d01.xbm

    characters\models\geralt\head\model\h_01_mg__geralt_tattoo_d02.xbm

    characters\models\geralt\head\model\h_02_mg__geralt_d01.xbm

    characters\models\geralt\head\model\h_02_mg__geralt_n01.xbm

    characters\models\geralt\head\model\h_03_mg__geralt_d01.xbm

    characters\models\geralt\head\model\h_03_mg__geralt_n01.xbm

    characters\models\geralt\head\model\h_04_mg__geralt_d01.xbm

    characters\models\geralt\head\model\h_04_mg__geralt_n01.xbm

    characters\models\geralt\head\model\ep1_mark\h_01_mg__geralt_d01_mark.xbm

    characters\models\geralt\head\model\ep1_mark\h_01_mg__geralt_d01_mark_tattoo.xbm

    characters\models\geralt\head\model\ep1_mark\h_01_mg__geralt_d02_mark.xbm

    characters\models\geralt\head\model\ep1_mark\h_01_mg__geralt_d02_mark_tattoo.xbm

    characters\models\geralt\head\model\ep1_mark\h_01_mg__geralt_n01_mark.xbm

    characters\models\geralt\head\model\ep1_mark\h_01_mg__geralt_n02_mark.xbm

    characters\models\geralt\body\model\body_01_mg__geralt_d01.xbm

    characters\models\geralt\body\model\s_01_mg__body_hires_d01.xbm

    Folder 3\

    dlc\dlc6\data\characters\models\main_npc\triss\model\body_01_wa__triss_dlc_d01.xbm

    dlc\dlc6\data\characters\models\main_npc\triss\model\body_01_wa__triss_dlc_s01.xbm

    dlc\dlc4\data\characters\models\main_npc\yennefer\model\body_05_wa__yennefer_d01.xbm

    dlc\dlc4\data\characters\models\main_npc\yennefer\model\body_05_wa__yennefer_d02.xbm

    dlc\dlc4\data\characters\models\main_npc\yennefer\model\glove_01_wa__yennefer_d01.xbm

    dlc\dlc4\data\characters\models\main_npc\yennefer\model\scarf_01_wa__yennefer_d01.xbm

    dlc\dlc4\data\characters\models\main_npc\yennefer\model\stockings_01_wa__yennefer_d01.xbm

    dlc\dlc4\data\characters\models\main_npc\yennefer\model\yennefer_feathers_d01.xbm

    dlc\dlc11\data\characters\models\main_npc\ciri\model\body_01_wa__ciri_dlc_d01.xbm

    dlc\dlc11\data\characters\models\main_npc\ciri\model\body_01_wa__ciri_dlc_d02.xbm

    dlc\dlc11\data\characters\models\main_npc\ciri\model\body_01_wa__ciri_dlc_d03.xbm

    dlc\dlc11\data\characters\models\main_npc\ciri\model\body_01_wa__ciri_dlc_s01.xbm

    dlc\dlc11\data\characters\models\main_npc\ciri\model\ciri_chainmail_dlc_d01.xbm

    dlc\dlc11\data\characters\models\main_npc\ciri\model\ciri_chainmail_dlc_n01.xbm

    characters\models\main_npc\yennefer\model\body_01_wa__yennefer.w2mesh

    characters\models\main_npc\yennefer\model\body_01_wa__yennefer.w2mesh.1.buffer

    characters\models\main_npc\yennefer\model\body_01_wa__yennefer_a01.xbm

    characters\models\main_npc\yennefer\model\body_01_wa__yennefer_a02.xbm

    characters\models\main_npc\yennefer\model\body_01_wa__yennefer_d01.xbm

    characters\models\main_npc\yennefer\model\body_01_wa__yennefer_d02.xbm

    characters\models\main_npc\yennefer\model\body_01_wa__yennefer_hooded.w2mesh

    characters\models\main_npc\yennefer\model\body_01_wa__yennefer_hooded.w2mesh.1.buffer

    characters\models\main_npc\yennefer\model\body_01_wa__yennefer_n01.xbm

    characters\models\main_npc\yennefer\model\body_01_wa__yennefer_n02.xbm

    characters\models\main_npc\yennefer\model\dress_01_wa__yennefer_a01.xbm

    characters\models\main_npc\yennefer\model\dress_01_wa__yennefer_a02.xbm

    characters\models\main_npc\yennefer\model\dress_01_wa__yennefer_d01.xbm

    characters\models\main_npc\yennefer\model\dress_01_wa__yennefer_d02.xbm

    characters\models\main_npc\yennefer\model\dress_01_wa__yennefer_n01.xbm

    characters\models\main_npc\yennefer\model\dress_01_wa__yennefer_n02.xbm

    characters\models\main_npc\yennefer\model\fur_01_wa__yennefer.w2mesh

    characters\models\main_npc\yennefer\model\fur_01_wa__yennefer.w2mesh.1.buffer

    characters\models\main_npc\yennefer\model\fur_01_wa__yennefer_a01.xbm

    characters\models\main_npc\yennefer\model\fur_01_wa__yennefer_d01.xbm

    characters\models\main_npc\yennefer\model\fur_01_wa__yennefer_n01.xbm

    characters\models\main_npc\yennefer\model\fur_02_wa__yennefer.w2mesh

    characters\models\main_npc\yennefer\model\fur_02_wa__yennefer.w2mesh.1.buffer

    characters\models\main_npc\yennefer\model\fur_03_wa__yennefer.w2mesh

    characters\models\main_npc\yennefer\model\fur_03_wa__yennefer.w2mesh.1.buffer

    characters\models\main_npc\yennefer\model\l_01_wa__yennefer.w2mesh

    characters\models\main_npc\yennefer\model\l_01_wa__yennefer.w2mesh.1.buffer

    characters\models\main_npc\yennefer\model\l_02_wa__yennefer.w2mesh

    characters\models\main_npc\yennefer\model\l_02_wa__yennefer.w2mesh.1.buffer

    characters\models\main_npc\yennefer\model\l_02_wa__yennefer_a01.xbm

    characters\models\main_npc\yennefer\model\l_02_wa__yennefer_d01.xbm

    characters\models\main_npc\yennefer\model\l_02_wa__yennefer_n01.xbm

    characters\models\main_npc\yennefer\model\yennefer__body_d_notcensor.xbm

    characters\models\main_npc\yennefer\model\yennefer__body_n_notcensor.xbm

    characters\models\main_npc\yennefer\h_01_wa__yennefer\eye__yennefer_d01.xbm

    characters\models\main_npc\yennefer\h_01_wa__yennefer\h_01_wa__yennefer_a01.xbm

    characters\models\main_npc\yennefer\h_01_wa__yennefer\h_01_wa__yennefer_b01.xbm

    characters\models\main_npc\yennefer\h_01_wa__yennefer\h_01_wa__yennefer_d01.xbm

    characters\models\main_npc\yennefer\h_01_wa__yennefer\h_01_wa__yennefer_n01.xbm

    characters\models\main_npc\triss\model\body_01_wa__triss_d01.xbm

    characters\models\main_npc\triss\model\body_02_wa__triss_d01.xbm

    characters\models\main_npc\triss\model\body_02_wa__triss_s01.xbm

    characters\models\main_npc\triss\model\body_03_wa__triss.w2mesh

    characters\models\main_npc\triss\model\body_03_wa__triss.w2mesh.1.buffer

    characters\models\main_npc\triss\model\body_03_wa__triss_a01.xbm

    characters\models\main_npc\triss\model\body_03_wa__triss_d01.xbm

    characters\models\main_npc\triss\model\body_03_wa__triss_n01.xbm

    characters\models\main_npc\triss\model\body_03_wa__triss_s01.xbm

    characters\models\main_npc\triss\model\i_03_wa__triss_d01.xbm

    characters\models\main_npc\triss\h_01_wa__triss\h_01_wa__triss_b01.xbm

    characters\models\main_npc\triss\h_01_wa__triss\h_01_wa__triss_d01.xbm

    characters\models\main_npc\triss\h_01_wa__triss\h_01_wa__triss_d02.xbm

    characters\models\main_npc\triss\h_01_wa__triss\h_01_wa__triss_d03.xbm

    characters\models\main_npc\triss\h_01_wa__triss\h_01_wa__triss_n01.xbm


    Jetzt sind 10 Dateinamen doppelt vorhanden. Diese sollen später im Treeview selber dann rot gefärbt werden anstatt grün.

    Das ist die Funktion, womit ich diese Daten herausfinde.

    Code
    Func _FindDuplicates($sPath)
        Local $aFolder, $aFiles, $aFind, $aRet
        $aFolder = _FileListToArrayRec($sPath, "*", 1, 1, 0, 1)
        $aFiles = _FileListToArrayRec($sPath, "*", 1, 1, 0, 0)
        For $i = 1 To $aFiles[0]
            $aFind = _ArrayFindAll($aFiles, $aFiles[$i])
            If UBound($aFind) <> 1 Then $aRet &= $aFolder[$i] & "|"
        Next
        $aRet = StringSplit(StringTrimRight($aRet, 1), "|")
        _ArraySort($aRet)
        Return $aRet
    EndFunc
    Alles anzeigen

    Das ist das Ergebnis:

    array.PNG

    Diese 20 Stellen sollten dann Rot gefärbt werden, anstatt grün.

    Ich komme seit Sonntag morgen einfach nicht drauf :(

  • _MuteActiveWindow - Sound vom aktiven Fenster stumm schalten.

    • xTcisloVe
    • 23. Juli 2018 um 16:33
    Zitat von Bitnugger

    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.


    C
    #RequireAdmin
    #include <StringConstants.au3>
    #include <TrayConstants.au3>
    #include <Process.au3>
    #include <File.au3>
    #include <FileConstants.au3>
    #include "ScalingMessageBox.au3"
    #include "_GetCurrentSoundDevice.au3"
    #include <Array.au3>
    #include <WinAPI.au3>
    #include <_MuteActiveWindow.au3>
    
    Opt("TrayMenuMode", 3)
    Opt("TrayIconDebug", 1)
    
    Global $IsMinimized = 0
    Global $ActualWindow
    
    If Not ProcessExists("aida64.exe") Or Not ProcessExists("RemotePanel.exe") Or Not ProcessExists("PerfTune.exe") Then AutoStart()
    local $dcPID[3]
    $dcPID[0] = 2
    $dcPID[1] = ShellExecute("D:\Batch Space\WindowsAutomation\DownloadControl.au3")
    $dcPID[2] = ShellExecute("D:\Batch Space\WindowsAutomation\FrapsMessage.au3")
    SwitchSoundDevice("Speaker") ;-> Selecting Speaker on Startup.
    SetHotKey(1)
    
    Func SetHotKey($iState)
        If $iState = 0 Then
            HotKeySet("+!s")
            HotKeySet("+!k")
            HotKeySet("+!t")
            HotKeySet("+!f")
            HotKeySet("+!n")
            HotKeySet("+!m")
            HotKeySet("+!c")
        ElseIf $iState = 1 Then
            HotKeySet("+!s", "SwitchSoundDevice") ; Shift-Alt-t. - Hotkey to switch between devices.
            HotKeySet("+!k", "AppMinMax") ; Shift-Alt-k. - Hotkey to minimize/maximize current app.
            HotKeySet("+!t", "Taskkiller") ; Shift-Alt-t. - Hotkey to kill current app.
            HotKeySet("+!f", "SteamFriends") ; Shift-Alt-f. - Hotkey to open Steam Friends.
            HotKeySet("+!n", "Notepad") ; Shift-Alt-N. - Hotkey for Notepad Function.
            HotKeySet("+!m", "_MuteActiveWindow") ; Shift-Alt-M. - Hotkey to mute active window sound.
            HotKeySet("+!c", "SciTEClipboard") ; Shift-Alt-M. - Hotkey to mute active window sound.
            TrayMenu()
        EndIf
    EndFunc
    
    Func TrayMenu()
        If Not IsDeclared("iSteam") Then
        Global $iSteam = TrayCreateItem("Steam")
            TrayCreateItem("") ; Create a separator line.
        Global $iMobileAuthenticator = TrayCreateItem("Mobile Authenticator")
            TrayCreateItem("") ; Create a separator line.
        Global $iGames = TrayCreateMenu("Games") ; Create a tray menu sub menu with two sub items.
        Global $iPUBG = TrayCreateItem("PLAYERUNKNOWN'S BATTLEGROUNDS", $iGames)
        Global $iDARWIN = TrayCreateItem("Darwin Project", $iGames)
        Global $iFORTNITE = TrayCreateItem("Fortnite Battle Royale", $iGames)
            TrayCreateItem("") ; Create a separator line.
        Global $iStopWatch = TrayCreateItem("StopWatch")
            TrayCreateItem("") ; Create a separator line.
        Global $iTimer = TrayCreateItem("Timer")
            TrayCreateItem("") ; Create a separator line.
        Global $iTaskManager = TrayCreateItem("TaskManager")
            TrayCreateItem("") ; Create a separator line.
        Global $iRestartSensor = TrayCreateItem("RestartSensor")
            TrayCreateItem("") ; Create a separator line.
        Global $iShutdown = TrayCreateItem("Shutdown")
            TrayCreateItem("") ; Create a separator line.
        Global $idExit = TrayCreateItem("Exit")
            TraySetState($TRAY_ICONSTATE_SHOW) ; Show the tray menu.
        EndIf
    
        While 1
            Switch TrayGetMsg()
                Case $iSteam
                    ShellExecute("D:\Spiele\Steam\Steam.exe")
    
                Case $iMobileAuthenticator
                    ShellExecute("D:\Batch Space\WindowsAutomation\MobileAuthenticator.au3")
    
                Case $iPUBG
                    ShellExecute("steam://rungameid/578080")
    
                Case $iDARWIN
                    ShellExecute("steam://rungameid/544920")
    
                Case $iFORTNITE
                    Run("D:\Spiele\Epic Games\Fortnite\FortniteGame\Binaries\Win64\FortniteClient-Win64-Shipping.exe")
    
                Case $iStopWatch
                    ShellExecute("D:\Batch Space\WindowsAutomation\StopWatch.au3")
    
                Case $iTimer
                    ShellExecute("D:\Batch Space\Timer\Timer.bat")
    
                Case $iTaskManager
                    ShellExecute("D:\Batch Space\TaskManager\Taskmanager.bat")
    
                Case $iRestartSensor
                    If ProcessExists("RemotePanel.exe") Then ProcessClose("RemotePanel.exe")
                    If ProcessExists("aida64.exe") Then ProcessClose("aida64.exe")
                    ScreenState()
                    ShellExecute("C:\Program Files (x86)\FinalWire\AIDA64 Extreme\aida64.exe","",@SW_SHOWNORMAL)
                    Run("C:\Program Files (x86)\Odospace\Remote Panel\RemotePanel.exe")
    
                Case $iShutdown
                    ShellExecute("D:\Batch Space\WindowsAutomation\Shutdown.au3")
    
                Case $idExit
                    for $i = 1 To $dcPID[0]
                    If ProcessExists($dcPID[$i]) Then ProcessClose($dcPID[$i])
                Next
                    Exit
    
            EndSwitch
        WEnd
    EndFunc
    
    Func SciTEClipboard()
        SetHotKey(0)
        _sMsgBox("SciTE Clipboard", "MsgBox;_sMsgBox", "Choose a option: ", "db=1;to=7;tr=10")
        if @extended = 1 Then ClipPut('MsgBox(0, "Test", "Test")')
        if @extended = 2 Then ClipPut('_sMsgBox("Test", "Ok", "Test", "")'&@CRLF)
        SetHotKey(1)
    EndFunc
    
    Func Notepad()
        SetHotKey(0)
        _sMsgBox("Launch SciTE or Notepad++?", "SciTE;Notepad++", "Launch SciTE or Notepad++?", "db=1;to=10;tr=10")
            if @extended = 1 Then Run("C:\Program Files (x86)\AutoIt3\SciTE\SciTE.exe")
            if @extended = 2 Then Run("C:\Program Files (x86)\Notepad++\notepad++.exe")
        SetHotKey(1)
    EndFunc
    
    Func SwitchSoundDevice($SoundDevice = "")
        SetHotKey(0)
        local $NirCMD = "D:\Batch Space\tools\nircmd.exe" ; nircmd.exe path
        local $IconPath = "D:\Batch Space\ICON\" ; Icons path
        local $CurrentDevice = StringLeft(_GetCurrentSoundDevice(), 7)
        If Not IsDeclared("SoundDevice") Then
            if $CurrentDevice = "Headset" Then Local $SoundDevice = "Speaker"
            if $CurrentDevice = "Speaker" Then Local $SoundDevice = "Headset"
            Run($NirCMD & " setdefaultsounddevice " & $SoundDevice)
        EndIf
        TrayTip($SoundDevice & " active.", " ", 1, $TIP_ICONASTERISK)
        TraySetToolTip($SoundDevice & " active.")
        TraySetIcon($IconPath & $SoundDevice & ".ico")
        ;Local $sActualWindow = WinGetTitle("[ACTIVE]")
        AppMinMax(0)
        If $SoundDevice = "Headset" Then
            If Not ProcessExists("ts3client_win64.exe") Then
                _sMsgBox("Headset Active, Teamspeak not.", "Yes;No", "Headset active, TeamSpeak 3 is not running.", "db=1;to=10")
                If @extended = 1 Then
                    ShellExecute("C:\Program Files\TeamSpeak 3 Client\ts3client_win64.exe")
                    WinWaitActive("TeamSpeak3", "", 20)
                EndIf
            EndIf
        EndIf
        If ProcessExists("ts3client_win64.exe") Then
            WinActivate("TeamSpeak3")
            If $SoundDevice = "Speaker" Then Send("!b") ; Alt + b -> Mute Mic/Speaker in Teamspeak.
            If $SoundDevice = "Headset" Then Send("!m") ; Alt + m -> Unmute Mic/Speaker in Teamspeak.
        EndIf
        ;If WinExists($sActualWindow) Then WinActivate($sActualWindow)
        AppMinMax(1)
        SetHotKey(1)
    EndFunc
    
    Func AppMinMax($IsMinimized) ;==>AppMinMax function.
        SetHotKey(0)
        If $IsMinimized = 0 Then
            $ActualWindow = WinGetTitle("[ACTIVE]")
            TraySetState($TRAY_ICONSTATE_FLASH)
            WinSetState($ActualWindow, "", @SW_MINIMIZE)
            TraySetToolTip("Minimized: " & $ActualWindow)
            $IsMinimized = 1
        else
            Local $Process = _ProcessGetName(WinGetProcess($ActualWindow))
            For $i = 1 to _FileCountLines("D:\Batch Space\WindowsAutomation\Games.txt")
            $Line = FileReadLine("D:\Batch Space\WindowsAutomation\Games.txt", $i)
            If $line = $Process Then
                If WinExists($ActualWindow) Then
                    WinActivate($ActualWindow)
                    WinSetState($ActualWindow, "", @SW_MAXIMIZE)
                EndIf
                ExitLoop
            EndIf
            Next
            WinActivate($ActualWindow)
            TraySetToolTip("Restored: " & $ActualWindow)
            TraySetState($TRAY_ICONSTATE_STOPFLASH)
            $IsMinimized = 0
        EndIf
        SetHotKey(1)
    EndFunc ;==>AppMinMax stop.
    
    Func Taskkiller() ;==>Taskkiller function.
        SetHotKey(0)
        local $Window = WinGetTitle("[ACTIVE]")
        local $Process = _ProcessGetName(WinGetProcess($Window))
        _sMsgBox("Kill " & $Process  & "?", "Yes.;No.", "Do you like to kill: " &@LF&@LF& $Window & "?", "db=1;to=1,20")
            If @extended = 1 Then ProcessClose($Process)
        If WinExists($Window) Then WinActivate($Window)
        SetHotKey(1)
    EndFunc ;==>Taskkiller stop.
    
    Func SteamFriends() ;==>SteamFriends function.
        SetHotKey(0)
        ShellExecute("steam://open/friends/")
        AppMinMax(0)
        WinActivate("Friends")
        SetHotKey(1)
    EndFunc ;==>SteamFriends stop.
    
    Func AutoStart()
        TraySetToolTip("Autorun active.")
        TraySetIcon("D:\Batch Space\ICON\Autorun.ico")
        TraySetState($TRAY_ICONSTATE_FLASH)
        RunWait('regedit /s "D:\Batch Space\WindowsAutomation\REGISTRY.reg"')
        ShellExecute("C:\Program Files (x86)\Intel\Intel(R) Extreme Tuning Utility\Client\PerfTune.exe","",@SW_SHOWNORMAL)
        WinWaitActive("Intel® Extreme Tuning Utility", "", 20)
        WinActivate("Intel® Extreme Tuning Utility")
        WinClose("Intel® Extreme Tuning Utility")
        If ProcessExists("RemotePanel.exe") Then ProcessClose("RemotePanel.exe")
        If ProcessExists("aida64.exe") Then ProcessClose("aida64.exe")
        ScreenState()
        ShellExecute("C:\Program Files (x86)\FinalWire\AIDA64 Extreme\aida64.exe","",@SW_SHOWNORMAL)
        Run("C:\Program Files (x86)\Odospace\Remote Panel\RemotePanel.exe")
        Run("G:\Programme\Tools\W10Privacy\W10Privacy.exe /s 1")
        BatteryLevel()
        TraySetState($TRAY_ICONSTATE_STOPFLASH)
    EndFunc
    
    Func ScreenState()
        FileChangeDir("C:\Program Files (x86)\Odospace\Remote Panel\adb")
        If ProcessExists("adb.exe") Then ProcessClose("adb.exe")
        Local $Odospace = StringInStr(_RunCmd('adb -s 3200d994ae6f9000 shell dumpsys activity activities | find "mFocusedActivity:"'), "com.odospace.remotepanel")
        If $Odospace <> 0 Then RunWait(@ComSpec & ' /c ' & "adb -s 3200d994ae6f9000 shell am force-stop com.odospace.remotepanel", @TempDir, @SW_HIDE)
        RunWait(@ComSpec & ' /c ' & "adb -s 3200d994ae6f9000 shell monkey -p com.odospace.remotepanel -c android.intent.category.LAUNCHER 1", @TempDir, @SW_HIDE)
        RunWait(@ComSpec & ' /c ' & "adb -s 3200d994ae6f9000 shell input keyevent KEYCODE_WAKEUP", @TempDir, @SW_HIDE)
    EndFunc
    
    Func BatteryLevel()
        FileChangeDir("C:\Program Files (x86)\Odospace\Remote Panel\adb")
        If ProcessExists("adb.exe") Then ProcessClose("adb.exe")
        Local $sBatteryLevel = StringTrimLeft(_RunCmd('adb -s 3200d994ae6f9000 shell dumpsys power | find "mBatteryLevel="'), 14)
        If $sBatteryLevel < 10 Then
            MsgBox(0, "Warning!", "Battery Level from Sensor Tablet is at: " & $sBatteryLevel & "%" & @CRLF & @CRLF & "Press ok to shutdown Tablet.")
            ;RunWait(@ComSpec & ' /c ' & "adb -s 3200d994ae6f9000 shell input keyevent KEYCODE_SLEEP", @TempDir, @SW_HIDE)
        Endif
        TrayTip("Tablet Battery Level is at: " & $sBatteryLevel & " %.", " ", 1, $TIP_ICONASTERISK)
    EndFunc
    
    Func _RunCmd($sCommand)
        If StringLeft($sCommand, 1) = " " Then $sCommand = " " & $sCommand
        Local $nPid = Run (@Comspec & " /c" & $sCommand, "", @SW_Hide, 8), $sRet = ""
        If @Error then Return "ERROR:" & @ERROR
        ProcessWait ($nPid)
        While 1
            $sRet &= StdoutRead($nPID)
            If @error Or (Not ProcessExists($nPid)) Then ExitLoop
        WEnd
        Return StringStripWS($sRet, 3)
    EndFunc ; ==> _RunCmd
    Alles anzeigen


    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.

  • _MuteActiveWindow - Sound vom aktiven Fenster stumm schalten.

    • xTcisloVe
    • 22. Juli 2018 um 18:12
    Zitat von alpines

    Mag ja sein, aber es ist inkonsistent HotKeySet die Funktion zu übergeben obwohl sie eigentlich keine Parameter haben darf.

    Für gewöhnlich bietet man Funktionen an die der User callen soll. Er soll gar nicht wissen wie die UDF hinter den Kulissen funktioniert sondern gibt ihr die Anweisung und die UDF macht dann alles intern selber.

    Funktional ändert das zwar nichts aber so hast du mehr Konsistenz und es ist einfacher zu verstehen.

    Funktionen wie IsDeclared Execute Assign o. ä. sollte man weitestgehend vermeiden, da sie schnell inkonsistenten Code liefern können.

    Ich hab IsDeclared bisher gany gern verwendet ...

    Wie mache ich es denn besser und hast du evtl. ein kleines Beispiel_ Ohne Funktionalitaet zu verlieren ...

  • _MuteActiveWindow - Sound vom aktiven Fenster stumm schalten.

    • xTcisloVe
    • 22. Juli 2018 um 17:49
    Zitat von alpines

    Ich verwende selber $sTitle für ganz andere Zwecke und deine UDF findet die Variable und spricht diese dann an, und jetzt?

    Ist das nicht unproblematisch da sie nur local in einer Funktion verwendet wird? WIe umgehe ich das denn?

  • _MuteActiveWindow - Sound vom aktiven Fenster stumm schalten.

    • xTcisloVe
    • 22. Juli 2018 um 17:21
    Zitat von alpines

    Habe ich doch grad beschrieben oder?

    :D Ich verstehe aber nicht wie du es meinst...

    Wenn ich die Funktion ohne variable Aufrufe wird sie ja in der Funktion festgelegt. Also beanspruche ich sie doch nicht oder?

    Wie soll ich das initialisieren denn aufbauen?

  • _MuteActiveWindow - Sound vom aktiven Fenster stumm schalten.

    • xTcisloVe
    • 22. Juli 2018 um 16:41
    Zitat von alpines

    Mit HotKeySet nicht, richtig, aber du solltest generell nicht irgendwelche Variablen beanspruchen welche der User selbst vielleicht nutzen möchte.

    Stattdessen solltest du lieber eine Initialisierungsfunktion anbieten die eine interne Variable beschreibt um dann per Hotkeyset die Funktion zu setzen welche dann auf die interne Variable zugreift.

    Wie geht das?

  • _MuteActiveWindow - Sound vom aktiven Fenster stumm schalten.

    • xTcisloVe
    • 22. Juli 2018 um 16:20
    Zitat von alpines

    Das IsDeclared kann wegfallen, denn $sTitle wird in jedem Fall deklariert als auch definiert sein, es ist immerhin ein Funktionsparameter.

    Anstatt dort den Wert standardmäßig auf "" zu setzen kannst du auch direkt das WinGetTitle als Standardwert hinschreiben.

    Dann sit es aber nicht mehr möglich das Fenster selber zu wählen.. ohne Global Variable oder?

  • _MuteActiveWindow - Sound vom aktiven Fenster stumm schalten.

    • xTcisloVe
    • 22. Juli 2018 um 16:20

    Allgemeine Frage:

    Ich habe ein Tray Menu worin ich auch Funktionen via Hotkey aufrufe, wie kann ich verhindern das mein Script stecken bleibt? Du hast das ja hier irgendwo eingebaut....

    C
    #RequireAdmin
    #include <StringConstants.au3>
    #include <TrayConstants.au3>
    #include <Process.au3>
    #include <File.au3>
    #include <FileConstants.au3>
    #include "ScalingMessageBox.au3"
    #include "_GetCurrentSoundDevice.au3"
    #include <Array.au3>
    #include <WinAPI.au3>
    #include <_MuteActiveWindow.au3>
    
    Opt("TrayMenuMode", 3)
    Opt("TrayIconDebug", 1)
    
    Global $IsMinimized = 0
    Global $ActualWindow
    
    HotKeySet("+!s", "SwitchSoundDevice") ; Shift-Alt-t. - Hotkey to switch between devices.
    HotKeySet("+!k", "AppMinMax") ; Shift-Alt-k. - Hotkey to minimize/maximize current app.
    HotKeySet("+!t", "Taskkiller") ; Shift-Alt-t. - Hotkey to kill current app.
    HotKeySet("+!f", "SteamFriends") ; Shift-Alt-f. - Hotkey to open Steam Friends.
    HotKeySet("+!n", "Notepad") ; Shift-Alt-N. - Hotkey for Notepad Function.
    HotKeySet("+!m", "_MuteActiveWindow") ; Shift-Alt-M. - Hotkey to mute active window sound.
    HotKeySet("+!c", "SciTEClipboard") ; Shift-Alt-M. - Hotkey to mute active window sound.
    
    If Not ProcessExists("aida64.exe") Or Not ProcessExists("RemotePanel.exe") Or Not ProcessExists("PerfTune.exe") Then AutoStart()
    local $dcPID[3]
    $dcPID[0] = 2
    $dcPID[1] = ShellExecute("D:\Batch Space\WindowsAutomation\DownloadControl.au3")
    $dcPID[2] = ShellExecute("D:\Batch Space\WindowsAutomation\FrapsMessage.au3")
    SwitchSoundDevice("Speaker") ;-> Selecting Speaker on Startup.
    
    Local $iSteam = TrayCreateItem("Steam")
        TrayCreateItem("") ; Create a separator line.
    Local $iMobileAuthenticator = TrayCreateItem("Mobile Authenticator")
        TrayCreateItem("") ; Create a separator line.
    Local $iGames = TrayCreateMenu("Games") ; Create a tray menu sub menu with two sub items.
    Local $iPUBG = TrayCreateItem("PLAYERUNKNOWN'S BATTLEGROUNDS", $iGames)
    Local $iDARWIN = TrayCreateItem("Darwin Project", $iGames)
    Local $iFORTNITE = TrayCreateItem("Fortnite Battle Royale", $iGames)
        TrayCreateItem("") ; Create a separator line.
    Local $iStopWatch = TrayCreateItem("StopWatch")
        TrayCreateItem("") ; Create a separator line.
    Local $iTimer = TrayCreateItem("Timer")
        TrayCreateItem("") ; Create a separator line.
    Local $iTaskManager = TrayCreateItem("TaskManager")
        TrayCreateItem("") ; Create a separator line.
    Local $iRestartSensor = TrayCreateItem("RestartSensor")
        TrayCreateItem("") ; Create a separator line.
    Local $iShutdown = TrayCreateItem("Shutdown")
        TrayCreateItem("") ; Create a separator line.
    Local $idExit = TrayCreateItem("Exit")
        TraySetState($TRAY_ICONSTATE_SHOW) ; Show the tray menu.
    
    While 1
        Switch TrayGetMsg()
            Case $iSteam
                ShellExecute("D:\Spiele\Steam\Steam.exe")
    
            Case $iMobileAuthenticator
                ShellExecute("D:\Batch Space\WindowsAutomation\MobileAuthenticator.au3")
    
            Case $iPUBG
                ShellExecute("steam://rungameid/578080")
    
            Case $iDARWIN
                ShellExecute("steam://rungameid/544920")
    
            Case $iFORTNITE
                Run("D:\Spiele\Epic Games\Fortnite\FortniteGame\Binaries\Win64\FortniteClient-Win64-Shipping.exe")
    
            Case $iStopWatch
                ShellExecute("D:\Batch Space\WindowsAutomation\StopWatch.au3")
    
            Case $iTimer
                ShellExecute("D:\Batch Space\Timer\Timer.bat")
    
            Case $iTaskManager
                ShellExecute("D:\Batch Space\TaskManager\Taskmanager.bat")
    
            Case $iRestartSensor
                If ProcessExists("RemotePanel.exe") Then ProcessClose("RemotePanel.exe")
                If ProcessExists("aida64.exe") Then ProcessClose("aida64.exe")
                ScreenState()
                ShellExecute("C:\Program Files (x86)\FinalWire\AIDA64 Extreme\aida64.exe","",@SW_SHOWNORMAL)
                Run("C:\Program Files (x86)\Odospace\Remote Panel\RemotePanel.exe")
    
            Case $iShutdown
                ShellExecute("D:\Batch Space\WindowsAutomation\Shutdown.au3")
    
            Case $idExit
                for $i = 1 To $dcPID[0]
                If ProcessExists($dcPID[$i]) Then ProcessClose($dcPID[$i])
            Next
                Exit
    
        EndSwitch
    WEnd
    
    Func SciTEClipboard()
        _sMsgBox("SciTE Clipboard", "MsgBox;_sMsgBox", "Choose a option: ", "db=1;to=7;tr=10")
        if @extended = 1 Then ClipPut('MsgBox(0, "Test", "Test")')
        if @extended = 2 Then ClipPut('_sMsgBox("Test", "Ok", "Test", "")'&@CRLF)
        Return
    EndFunc
    
    Func Notepad()
        _sMsgBox("Launch SciTE or Notepad++?", "SciTE;Notepad++", "Launch SciTE or Notepad++?", "db=1;to=10;tr=10")
            if @extended = 1 Then Run("C:\Program Files (x86)\AutoIt3\SciTE\SciTE.exe")
            if @extended = 2 Then Run("C:\Program Files (x86)\Notepad++\notepad++.exe")
    EndFunc
    
    Func SwitchSoundDevice($SoundDevice = "")
        local $NirCMD = "D:\Batch Space\tools\nircmd.exe" ; nircmd.exe path
        local $IconPath = "D:\Batch Space\ICON\" ; Icons path
        local $CurrentDevice = StringLeft(_GetCurrentSoundDevice(), 7)
        If Not IsDeclared("SoundDevice") Then
            if $CurrentDevice = "Headset" Then Local $SoundDevice = "Speaker"
            if $CurrentDevice = "Speaker" Then Local $SoundDevice = "Headset"
            Run($NirCMD & " setdefaultsounddevice " & $SoundDevice)
        EndIf
        TrayTip($SoundDevice & " active.", " ", 1, $TIP_ICONASTERISK)
        TraySetToolTip($SoundDevice & " active.")
        TraySetIcon($IconPath & $SoundDevice & ".ico")
        Local $sActualWindow = WinGetTitle("[ACTIVE]")
        If $SoundDevice = "Headset" Then
            If Not ProcessExists("ts3client_win64.exe") Then
                _sMsgBox("Headset Active, Teamspeak not.", "Yes;No", "Headset active, TeamSpeak 3 is not running.", "db=1;to=10")
                If @extended = 1 Then
                    ShellExecute("C:\Program Files\TeamSpeak 3 Client\ts3client_win64.exe")
                    WinWaitActive("TeamSpeak3")
                EndIf
            EndIf
        EndIf
        If ProcessExists("ts3client_win64.exe") Then
            WinActivate("TeamSpeak3")
            If $SoundDevice = "Speaker" Then Send("!b") ; Alt + b -> Mute Mic/Speaker in Teamspeak.
            If $SoundDevice = "Headset" Then Send("!m") ; Alt + m -> Unmute Mic/Speaker in Teamspeak.
        EndIf
        If WinExists($sActualWindow) Then WinActivate($sActualWindow)
    EndFunc
    
    Func AppMinMax($IsMinimized) ;==>AppMinMax function.
        If $IsMinimized = 0 Then
            $ActualWindow = WinGetTitle("[ACTIVE]")
            TraySetState($TRAY_ICONSTATE_FLASH)
            WinSetState($ActualWindow, "", @SW_MINIMIZE)
            TraySetToolTip("Minimized: " & $ActualWindow)
            $IsMinimized = 1
        else
            Local $Process = _ProcessGetName(WinGetProcess($ActualWindow))
            For $i = 1 to _FileCountLines("D:\Batch Space\WindowsAutomation\Games.txt")
            $Line = FileReadLine("D:\Batch Space\WindowsAutomation\Games.txt", $i)
            If $line = $Process Then
                If WinExists($ActualWindow) Then
                    WinActivate($ActualWindow)
                    WinSetState($ActualWindow, "", @SW_MAXIMIZE)
                EndIf
                ExitLoop
            EndIf
            Next
            WinActivate($ActualWindow)
            TraySetToolTip("Restored: " & $ActualWindow)
            TraySetState($TRAY_ICONSTATE_STOPFLASH)
            $IsMinimized = 0
        EndIf
    EndFunc ;==>AppMinMax stop.
    
    Func Taskkiller() ;==>Taskkiller function.
        local $Window = WinGetTitle("[ACTIVE]")
        local $Process = _ProcessGetName(WinGetProcess($Window))
        _sMsgBox("Kill " & $Process  & "?", "Yes.;No.", "Do you like to kill: " &@LF&@LF& $Window & "?", "db=1;to=1,20")
            If @extended = 1 Then ProcessClose($Process)
        If WinExists($Window) Then WinActivate($Window)
    EndFunc ;==>Taskkiller stop.
    
    Func SteamFriends() ;==>SteamFriends function.
        ShellExecute("steam://open/friends/")
        AppMinMax(0)
        WinActivate("Friends")
    EndFunc ;==>SteamFriends stop.
    
    Func AutoStart()
        TraySetToolTip("Autorun active.")
        TraySetIcon("D:\Batch Space\ICON\Autorun.ico")
        TraySetState($TRAY_ICONSTATE_FLASH)
        RunWait('regedit /s "D:\Batch Space\WindowsAutomation\REGISTRY.reg"')
        ShellExecute("C:\Program Files (x86)\Intel\Intel(R) Extreme Tuning Utility\Client\PerfTune.exe","",@SW_SHOWNORMAL)
        WinWaitActive("Intel® Extreme Tuning Utility", "", 20)
        WinActivate("Intel® Extreme Tuning Utility")
        WinClose("Intel® Extreme Tuning Utility")
        If ProcessExists("RemotePanel.exe") Then ProcessClose("RemotePanel.exe")
        If ProcessExists("aida64.exe") Then ProcessClose("aida64.exe")
        ScreenState()
        ShellExecute("C:\Program Files (x86)\FinalWire\AIDA64 Extreme\aida64.exe","",@SW_SHOWNORMAL)
        Run("C:\Program Files (x86)\Odospace\Remote Panel\RemotePanel.exe")
        Run("G:\Programme\Tools\W10Privacy\W10Privacy.exe /s 1")
        BatteryLevel()
        TraySetState($TRAY_ICONSTATE_STOPFLASH)
    EndFunc
    
    Func ScreenState()
        FileChangeDir("C:\Program Files (x86)\Odospace\Remote Panel\adb")
        If ProcessExists("adb.exe") Then ProcessClose("adb.exe")
        Local $Odospace = StringInStr(_RunCmd('adb -s 3200d994ae6f9000 shell dumpsys activity activities | find "mFocusedActivity:"'), "com.odospace.remotepanel")
        If $Odospace <> 0 Then RunWait(@ComSpec & ' /c ' & "adb -s 3200d994ae6f9000 shell am force-stop com.odospace.remotepanel", @TempDir, @SW_HIDE)
        RunWait(@ComSpec & ' /c ' & "adb -s 3200d994ae6f9000 shell monkey -p com.odospace.remotepanel -c android.intent.category.LAUNCHER 1", @TempDir, @SW_HIDE)
        RunWait(@ComSpec & ' /c ' & "adb -s 3200d994ae6f9000 shell input keyevent KEYCODE_WAKEUP", @TempDir, @SW_HIDE)
    EndFunc
    
    Func BatteryLevel()
        FileChangeDir("C:\Program Files (x86)\Odospace\Remote Panel\adb")
        If ProcessExists("adb.exe") Then ProcessClose("adb.exe")
        Local $sBatteryLevel = StringTrimLeft(_RunCmd('adb -s 3200d994ae6f9000 shell dumpsys power | find "mBatteryLevel="'), 14)
        If $sBatteryLevel < 10 Then
            MsgBox(0, "Warning!", "Battery Level from Sensor Tablet is at: " & $sBatteryLevel & "%" & @CRLF & @CRLF & "Press ok to shutdown Tablet.")
            ;RunWait(@ComSpec & ' /c ' & "adb -s 3200d994ae6f9000 shell input keyevent KEYCODE_SLEEP", @TempDir, @SW_HIDE)
        Endif
        TrayTip("Tablet Battery Level is at: " & $sBatteryLevel & " %.", " ", 1, $TIP_ICONASTERISK)
    EndFunc
    
    Func _RunCmd($sCommand)
     If StringLeft($sCommand, 1) = " " Then $sCommand = " " & $sCommand
     Local $nPid = Run (@Comspec & " /c" & $sCommand, "", @SW_Hide, 8), $sRet = ""
     If @Error then Return "ERROR:" & @ERROR
     ProcessWait ($nPid)
     While 1
        $sRet &= StdoutRead($nPID)
        If @error Or (Not ProcessExists($nPid)) Then ExitLoop
     WEnd
     Return StringStripWS($sRet, 3)
    EndFunc ; ==> _RunCmd
    Alles anzeigen
  • _MuteActiveWindow - Sound vom aktiven Fenster stumm schalten.

    • xTcisloVe
    • 22. Juli 2018 um 14:12
    Zitat von Bitnugger

    HotKeySet("+!m", "_MuteActiveWindow")

    Das kann nicht funktionieren, weil die mit HotKey aufgerufene Funktion keinen Parameter haben darf und $sTitle in dem Fall nicht deklariert ist.

    AutoIt-Hilfe zu HotKeySet: The called function can not be given parameters. They will be ignored.

    Ja das hab ich mit Absicht so gemacht, falls jemand oder ich vorher ein Fenster festlegen wollen und ich die Funktion nicht nur über Hotkeys starten wollte.

    Code
    If not IsDeclared("sTitle") Or $sTitle = "" Then $sTitle = WinGetTitle("[ACTIVE]")

    Dadurch wird das brauchen der Variable ja unterbunden...?


    Zitat

    If Not StringInStr($text, $sStringIncludes) Then ...

    Die Chancen, dass $sStringIncludes in $text gefunden wird, stehen also sehr schlecht.


    Damit es zumindest zufriedenstellend funktionieren kann, müsste der Teilstring in $text, der nach dem "Stumm für " steht, in $sStringIncludes gesucht werden, und nicht umgekehrt.

    Nächstes Problem wäre, wenn der User sein Windows in einer anderen Sprache (z.B. EN) nutzt... dann wird aus "Stumm für " nämlich "Mute for ". ;)

    Auch mit dem HotKey kann es hakeln, wenn die Funktion erneut aufgerufen wird, bevor sie komplett durchlaufen wurde.

    Alles anzeigen

    Ich verstehe nicht ganz wieso das mit dem Stumm für ein Problem ist? Ich habe doch nirgends "Stumm für:" definiert sondern ich suche einfach nach dem Fenstertitel und der sollte doch unabhängig von Stumm für: oder Mute for: immer enthalten sein oder irre ich da?

  • _MuteActiveWindow - Sound vom aktiven Fenster stumm schalten.

    • xTcisloVe
    • 20. Juli 2018 um 21:42

    Kurz und knapp:

    Mit der Hilfe von : (Leicht modifiziert von mir)
    https://www.autoitscript.com/forum/topic/16…ndows-controls/

    Habe ich eine kleine UDF geschrieben, mit der man den Ton vom Fenster im Vordergrund oder von einem eigens definierten Fenster, im Volume Mixer Stumm schalten kann, bzw. den Ton wieder anstellen kann.

    Hier ist die UDF: _MuteActiveWindow.au3

    Beispiel:

    Code
    #include <_MuteActiveWindow.au3>
    
    HotKeySet("+!m", "_MuteActiveWindow") ; Shift-Alt-M. - Hotkey to mute active window sound.
    
    While 1
        sleep(200)
    Wend
  • Skalierende Message Box

    • xTcisloVe
    • 9. Juli 2018 um 09:06
    Zitat von Bitnugger
    AutoIt
    Case $Btn_Start To $Btn_End
            Return $Msg - $Btn_Start + 1


    Das gibt mir aber nicht den richtigen Code zurück. Das macht es nur wenn ich + 1 weg lasse.

    Code
    Case $First_Button To $Last_Button
                    For $i = 1 To $Button_[0]
                        $x = GUICtrlRead($Msg)
                        if $Button_[$i] = $x Then ExitLoop
                    Next
                        GUIDelete($hGUI)
                        Return SetExtended($i, $x)

    Was ist genauer?

    Code
    Return SetExtended($Msg - $First_Button, GUICtrlRead($Msg))
  • Skalierende Message Box

    • xTcisloVe
    • 8. Juli 2018 um 21:42

    Nur mal so zur info, man braucht kein DIM :D

    War es so gemeint? autoiter


    Edit: 22:35

    C
    #include <GUIconstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Array.au3>
    #include "StringSize.au3"
    
    
    Example()
    exit
    
    Func Example()
    $PressedButton = _sMsgBox("Title", "Yes,No,3,4,5,6,7,8,9,10", Default, Default, Default, Default, "This is Line 1" & @LF & @LF & "This is Line 3", 30)
            Switch @extended
                case -2 ;--> Timer expired.
                    MsgBox(0, @extended,  $PressedButton, 10)
    
                case -1 ;--> Message Box closed with x.
                    MsgBox(0, @extended,  $PressedButton, 10)
    
                case 1 ;--> Yes button pressed.
                    MsgBox(0, @extended, "You pressed: " & $PressedButton, 10)
    
                case 2 ;--> No button pressed.
                    MsgBox(0, @extended, "You pressed: " & $PressedButton, 10)
    
                case Else ;--> Any other button pressed.
                    MsgBox(0, @extended, "You pressed: " & $PressedButton, 10)
            EndSwitch
    EndFunc
    
    Func _sMsgBox($Title, $Buttons, $Button_Width, $Button_Height, $Button_Seperator, $Edge_Space, $Label_Text, $TimeOut)
        if $Buttons = "" Then
            MsgBox(0, "ERROR", "ERROR - No Button defined.")
            Return "ERROR"
        EndIf
    
        If $Title = Default Or $Title = "" Then $Title = "Title"
    
        If $Button_Width = Default Or $Button_Width = "" Then $Button_Width= 100
    
        If $Button_Height = Default Or $Button_Height = "" Then $Button_Height= 30
    
        If $Button_Seperator = Default Or $Button_Seperator = "" Then $Button_Seperator= 15
    
        If $Edge_Space= Default Or $Edge_Space = "" Then $Edge_Space= 15
    
        If $TimeOut = Default Or $TimeOut = "" Then $TimeOut= 0
    
        If $TimeOut <> 0 Then
            local $Timer=TimerInit()
            local $Time=TimerInit()
            local $CurrentTimer = $TimeOut-1, $CurrentTimerTemp
        EndIf
    
        local $Button_ = StringSplit($Buttons, ",")
    
        Local $GUI_Width_Math = $Edge_Space
    
        For $i = 1 To $Button_[0]
            $x = $GUI_Width_Math+$Button_Width+$Button_Seperator
            $GUI_Width_Math = $x
        Next
    
        local $GUI_Width = $GUI_Width_Math-$Button_Seperator+$Edge_Space
        Local $Max_Label_Width = $GUI_Width-$Edge_Space-$Edge_Space
    
        local $Label_StringSize = _StringSize($Label_Text, Default, Default, Default, Default, $Max_Label_Width)
    
        Local $GUI_Height = $Edge_Space+$Label_StringSize[3]+$Edge_Space+$Button_Height+$Edge_Space
        Local $Button_Top = $Edge_Space+$Label_StringSize[3]+$Edge_Space
    
        local $hGUI = GUICreate($Title, $GUI_Width, $GUI_Height)
        GUISetStyle(BitOR($WS_CAPTION, $WS_POPUPWINDOW))
    
        GUICtrlCreateLabel($Label_StringSize[0], $Edge_Space, $Edge_Space, $Label_StringSize[2], $Label_StringSize[3])
    
        local $ButtonMath = $Edge_Space
    
            $Btn_Start = GUICtrlCreateDummy()
        For $i = 1 To $Button_[0]
            $x = $ButtonMath
            local $GUI_Button_[$i] = GUICtrlCreateButton($Button_[$i], $x, $Button_Top, $Button_Width, $Button_Height)
            $ButtonMath = $x + $Button_Width + $Button_Seperator
        Next
            $Btn_End = GUICtrlCreateDummy()
    
        GUISetState ()
    
        While 1
            $Msg = GUIGetMsg(0)
                Switch $Msg
                    Case $GUI_EVENT_CLOSE
                        GUIDelete($hGUI)
                        Return SetExtended(-1, "MessageBox closed.")
    
                    Case $Btn_Start To $Btn_End
                        For $i = 1 To $Button_[0]
                            $x = GUICtrlRead($Msg)
                            if $Button_[$i] = $x Then ExitLoop
                        Next
                            GUIDelete($hGUI)
                            Return SetExtended($i, $x)
                EndSwitch
                    If $TimeOut <> 0 Then
                        If TimerDiff($Timer) >= $TimeOut*1000 then
                            GUIDelete($hGUI)
                            Return SetExtended(-2, "TimeOut expired.")
                        Else
                            If TimerDiff($Time) >= 1000 then
                                WinSetTitle($hGUI, "", "[" & $CurrentTimer & "] - " & $Title)
                                $CurrentTimerTemp = $CurrentTimer
                                $CurrentTimer = $CurrentTimerTemp-1
                                $Time=TimerInit()
                            EndIf
                        EndIf
                    EndIf
        Wend
    EndFunc
    Alles anzeigen
  • Skalierende Message Box

    • xTcisloVe
    • 8. Juli 2018 um 20:54
    Zitat von autoiter

    Der Index war nur ein Vorschlag als plausible Rückmeldung. Du hast doch geschrieben, dass du unzufrieden seist, nur den Button-Text zurück zu liefern..

    Kannst du vorher mal erklären, warum du glaubst das an der Stelle zu brauchen und was da geschieht?

    (Das soll eigentlich nur als Anstoß gelten, das noch einmal selbst zu durchdenken und ist keine Wissensabfrage. Wenn du Probleme hast, kannst du dich gerne melden).

    EIgtl wollte ich ein array erstellen (dachte ich).

    Das ich wieder (Als Beispiel)

    Code
    $iIndex_1 = _ArraySearch($aArray_1, $iMsg) 


    Und das ich den array vorher:

    Code
    Local $iIndex_1, $aArray_1 = [[$Button_4, "1020x470x470"]....

    mit einer FOR schleife erstelle.

    Ich bin mit:

    Code
    Return SetExtended($Msg-4, GUICtrlRead($Msg))

    schon ganz zufrieden, mit $MSg-4 habe ich immer den richtigen Button (hoffe ich) und kann auch noch den Button selber ausgeben.

    Code
    local $aButtons = StringSplit($Buttons, ",")
        Dim $Button_[($aButtons[0] + 1)]
        Local $GUI_Width_Math = $Edge_Space
        For $i = 1 To $aButtons[0]
            $Button_[$i] = $GUI_Width_Math+$Button_Width+$Button_Seperator
            $GUI_Width_Math = $Button_[$i]
        Next

    Ich denke ich brauche hier Dim um die variablen zu erstellen ?

  • Skalierende Message Box

    • xTcisloVe
    • 8. Juli 2018 um 19:46
    Zitat von autoiter

    Lass doch mal dieses Dim xxx weg. Das macht keinen Sinn. Du hast mit StringSplit ein Array erstellt. Das solltest du durchgehen.

    Es würde sich meiner Meinung nach darin erschöpfen:

    AutoIt
    For $i = 1 To $aIndex[0]
        If $Msg = $aIndex[$i] Then Return SetExtended($Msg, GUICtrlRead($Msg)
    Next

    Ich musste aber deinen code leicht ändern um bei Button 1 auch 1 zurück zu bekommen ..?

    Code
    local $aIndex = StringSplit($Buttons, ",")
                    For $i = 1 To $aIndex[0]
                        If $Msg = $aIndex[$i] Then Return SetExtended($Msg-4, GUICtrlRead($Msg))
                    Next

    Wo ist der Unterschied zu ?

    Also wozu der Index?

    Code
    Return SetExtended($Msg-4, GUICtrlRead($Msg))



    Brauch ich hier auch kein Dim? Wenn ja wieso ?

    Code
    local $aButtons = StringSplit($Buttons, ",")
        Dim $Button_[($aButtons[0] + 1)]
    
        Local $GUI_Width_Math = $Edge_Space
    
        For $i = 1 To $aButtons[0]
            $Button_[$i] = $GUI_Width_Math+$Button_Width+$Button_Seperator
            $GUI_Width_Math = $Button_[$i]
        Next
  • Skalierende Message Box

    • xTcisloVe
    • 8. Juli 2018 um 18:43

    Aktuell:

    C
    #include <GUIconstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Array.au3>
    #include "StringSize.au3"
    
    
    Example()
    exit
    
    Func Example()
    $PressedButton = _sMsgBox("Title", "Yes,No,3,4,5,6,7,8,9,10", Default, Default, Default, Default, "This is Line 1" & @LF & @LF & "This is Line 3", 5)
            Switch @extended
    
                case -2 ;--> Timer expired.
                    MsgBox(0, @extended,  $PressedButton, 10)
    
                case -1 ;--> Message Box closed with x.
                    MsgBox(0, @extended,  $PressedButton, 10)
    
                case 1 ;--> Yes button pressed.
                    MsgBox(0, @extended, "You pressed: " & $PressedButton, 10)
    
                case 2 ;--> No button pressed.
                    MsgBox(0, @extended, "You pressed: " & $PressedButton, 10)
    
                case Else ;--> Any other button pressed.
                    MsgBox(0, @extended, "You pressed: " & $PressedButton, 10)
    
            EndSwitch
    EndFunc
    
    Func _sMsgBox($Title, $Buttons, $Button_Width, $Button_Height, $Button_Seperator, $Edge_Space, $Label_Text, $TimeOut)
        if $Buttons = "" Then
            MsgBox(0, "ERROR", "ERROR - No Button defined.")
            Return "ERROR"
        EndIf
    
        If $Title = Default Or $Title = "" Then $Title = "Title"
    
        If $Button_Width = Default Or $Button_Width = "" Then $Button_Width= 100
    
        If $Button_Height = Default Or $Button_Height = "" Then $Button_Height= 30
    
        If $Button_Seperator = Default Or $Button_Seperator = "" Then $Button_Seperator= 15
    
        If $Edge_Space= Default Or $Edge_Space = "" Then $Edge_Space= 15
    
        If $TimeOut = Default Or $TimeOut = "" Then $TimeOut= 0
    
        If $TimeOut <> 0 Then
            local $Timer=TimerInit()
            local $Time=TimerInit()
            local $CurrentTimer = $TimeOut-1, $CurrentTimerTemp
        EndIf
    
        local $aButtons = StringSplit($Buttons, ",")
        Dim $Button_[($aButtons[0] + 1)]
    
        Local $GUI_Width_Math = $Edge_Space
    
        For $i = 1 To $aButtons[0]
            $Button_[$i] = $GUI_Width_Math+$Button_Width+$Button_Seperator
            $GUI_Width_Math = $Button_[$i]
        Next
    
        local $GUI_Width = $GUI_Width_Math-$Button_Seperator+$Edge_Space
        Local $Max_Label_Width = $GUI_Width-$Edge_Space-$Edge_Space
    
        local $Label_StringSize = _StringSize($Label_Text, Default, Default, Default, Default, $Max_Label_Width)
        Local $Label_Width = $Label_StringSize[2]
        Local $Label_Height = $Label_StringSize[3]
        Local $GUI_Height = $Edge_Space+$Label_Height+$Edge_Space+$Button_Height+$Edge_Space
        Local $Button_Top = $Edge_Space+$Label_Height+$Edge_Space
    
        Dim $GUI_Button_[($aButtons[0] + 1)]
    
        local $hGUI = GUICreate($Title, $GUI_Width, $GUI_Height)
        GUISetStyle(BitOR($WS_CAPTION, $WS_POPUPWINDOW) )
    
        GUICtrlCreateLabel($Label_StringSize[0], $Edge_Space, $Edge_Space, $Label_StringSize[2], $Label_StringSize[3])
    
        local $ButtonMath = $Edge_Space
    
        $Btn_Start = GUICtrlCreateDummy()
        For $i = 1 To $aButtons[0]
            $x = $ButtonMath
            $GUI_Button_[$i] = GUICtrlCreateButton($aButtons[$i], $x, $Button_Top, $Button_Width, $Button_Height)
            $ButtonMath = $x + $Button_Width + $Button_Seperator
        Next
        $Btn_End = GUICtrlCreateDummy()
        GUISetState ()
    
        While 1
        $Msg = GUIGetMsg(0)
            Switch $Msg
                Case $GUI_EVENT_CLOSE
                    GUIDelete($hGUI)
                    Return SetExtended(-1, "MessageBox closed.")
    
                Case $Btn_Start To $Btn_End
                    local $Return = GUICtrlRead($Msg)
                    Return SetExtended($Msg-4, $Return)
    
            EndSwitch
        If $TimeOut <> 0 Then
            If TimerDiff($Timer) >= $TimeOut*1000 then
                GUIDelete($hGUI)
                Return SetExtended(-2, "TimeOut expired.")
            Else
                If TimerDiff($Time) >= 1000 then
                    WinSetTitle($hGUI, "", "[" & $CurrentTimer & "] - " & $Title)
                    $CurrentTimerTemp = $CurrentTimer
                    $CurrentTimer = $CurrentTimerTemp-1
                    $Time=TimerInit()
                EndIf
            EndIf
        EndIf
        Wend
    EndFunc
    ;;;;;;;;;;AUTHOR: XTCISLOVE;;;;;;;;;;
    Alles anzeigen


    Funktioniert, ist aber nicht ganz richtig oder?

    Code
    Case $Btn_Start To $Btn_End
                    local $Return = GUICtrlRead($Msg)
                    Return SetExtended($Msg-4, $Return)

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™