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

Beiträge von Bitnugger

  • Error-Handling in meinem Skript

    • Bitnugger
    • 12. August 2018 um 11:23
    Zitat von Mikki

    Aber kannst du mir denn sagen, wo der Fehler bei meiner Methode liegt?

    Nicht der, sondern die Fehler... wobei dein schlimmster wohl ist, das du den For $j-Loop innerhalb des For $i-Loops ausführst. Der For $j-Loop wird im ungünstigsten Fall also 15x ausgeführt und schlimmer noch, bei jedem Durchgang prüfst du immer dasselbe Inputfeld =>> $aRead_Inputbox[$i]!

    In dem For $k-Loop liest du die ersten fünf Inhalte der Inputfelder nochmals ein, was gar nicht nötig ist, denn du hast sie ja bereits eingelesen! Sinnfrei wird dieser Loop durch die nächste Zeile, denn somit prüfst du 6x, ob $aRead_Inputbox[0] = $aRead_Inputbox[5] ist.

    Übersichtlicher und leichter verständlich wäre es etwa so...

    AutoIt
    ;-- TIME_STAMP   2018-08-12 12:56:49   v 0.1
    
    Global $aMsgBox = [
            ["1.Kein Umwandlungsordner angegeben!"                                          , "1.Pfad für den Umwandlungsordner (lokal) ungültig!"], _
            ["2.Kein Verzeichnis für die Stuecklisten angegeben!"                           , "2.Pfad für die Stücklisten (lokal) ungültig!"], _
            ["3.Kein Verzeichnis für die NC-Daten (nc-blech) angegeben!"                    , "3.Pfad für die NC-Daten (nc-blech, lokal) ungültig!"], _
            ["4.Kein Verzeichnis für die NC-Daten (nc-profil) angegeben!"                   , "4.Pfad für die NC-Daten (nc-profil, lokal) ungültig!"], _
            ["5.Kein Pfad im Zielverzeichnis für das Fertigungspaket angegeben!"            , "5.Pfad für das Fertigungspaket (lieferungen, lokal) ungültig!"], _
            ["6.Kein Pfad im Auftragsordner für die bmf´s angegeben!"                       , "6.Pfad für die bmf´s (plaene, lokal) ungültig!"], _
            ["7.Kein Server-Verzeichnis für die Stuecklisten angegeben!"                    , "7.Pfad für die Stücklisten (Server) ungültig!"], _
            ["8.Kein Server-Verzeichnis für die pdf-Dateien angegeben!"                     , "8.Pfad für die Werkstattpläne (pdf´s, Server) ungültig!"], _
            ["9.Kein Server-Verzeichnis für die dwg-Dateien angegeben!"                     , "9.Pfad für die Werkstattpläne (dwg´s, Server) ungültig!"], _
            ["10.Kein Server-Verzeichnis für die bmf-Dateien angegeben!"                    , "10.Pfad für die Werkstattpläne (bmf´s, Server) ungültig!"], _
            ["11.Kein Server-Verzeichnis für die Teilsystemperspektive als pdf angegeben!"  , "11.Pfad für die Teilsystemperspektive (pdf´s, Server) ungültig!"], _
            ["12.Kein Server-Verzeichnis für die Teilsystemperspektive als dwg angegeben!"  , "12.Pfad für die Teilsystemperspektive (dwg´s, Server) ungültig!"], _
            ["13.Kein Server-Verzeichnis für die Teilsystemperspektive als bmf_ angegeben!" , "13.Pfad für die Teilsystemperspektive (bmf´s, Server) ungültig!"], _
            ["14.Kein Server-Verzeichnis für die NC-Daten angegeben!"                       , "14.Pfad für die NC-Daten (Server) ungültig!"], _
            ["15.Kein Server-Verzeichnis für die Abwicklungen-Kantteile angegeben!"         , "15.Pfad für die Abwicklungen Kantteile (dxf, Server) ungültig!"], _
            ["16.Umwandlungsordner kann nicht gleich dem Ordner 'plaene' sein!"], _
            ["Sie haben einen Sicherungsauftrag gewählt! Die Aktion wird abgebrochen! Bitte wählen Sie einen Sortierauftrag."]] ; Was ist mit dieser Meldung?
    
    
    ;weiterer Code.....
    
    
    Func Sortierauftrag_anlegen()
        Local Static $aState = [$GUI_ENABLE, $GUI_DISABLE]
        Local $iState = -1
    
        GUICtrlSetState($Button_Auftrag_bearbeiten, $GUI_DISABLE)
        GUICtrlSetState($Button_Auftrag_Anlegen, $GUI_DISABLE)
    
        If GUICtrlRead($Checkbox_Fremdauftrag) = $GUI_UNCHECKED Then
    ;~     Input auslesen und auf Vollständigkeit und Gültigkeit prüfen.
            For $i = 0 To 14
                $aRead_Inputbox[$i] = GUICtrlRead($aInputbox[$i])
                Select
                    Case $aRead_Inputbox[$i] = ''
                        $iState = MsgBox(16, "Error", "" & $aMsgBox[$i][0])
                    Case FileExists($aRead_Inputbox[$i]) = 0
                        $iState = MsgBox(16, "Error", "" & $aMsgBox[$i][1])
                    Case $i > 0 And $i < 6 And $aRead_Inputbox[$i] = $aRead_Inputbox[0]
                        $iState = MsgBox(16, "Error", "" & $aMsgBox[15][0])
                EndSelect
                If $iState = -1 Then ContinueLoop
                GUICtrlSetState($Button_Auftrag_bearbeiten, $aState[$iState)
                GUICtrlSetState($Button_Auftrag_Anlegen, $aState[$iState)
                Return
            Next
        EndIf
    EndFunc   ;==>Sortierauftrag_anlegen
    Alles anzeigen
  • Error-Handling in meinem Skript

    • Bitnugger
    • 12. August 2018 um 01:59

    So in etwa würde ich es machen...

    AutoIt
    Func Sortierauftrag_anlegen()
        Local Static $aState = [$GUI_ENABLE, $GUI_DISABLE]
        Local $j
    
        GUICtrlSetState($Button_Auftrag_bearbeiten, $GUI_DISABLE)
        GUICtrlSetState($Button_Auftrag_Anlegen, $GUI_DISABLE)
    
        $READ_Checkbox_Fremdauftrag = GUICtrlRead($Checkbox_Fremdauftrag)
    
        If $READ_Checkbox_Fremdauftrag = $GUI_UNCHECKED Then
    ;~     Input auslesen und auf Vollständigkeit und Gültigkeit prüfen.
            For $i = 0 To 14
                $j = $i + 15
                $aRead_Inputbox[$i] = GUICtrlRead($aInputbox[$i])
    
                Switch True
                    Case $aRead_Inputbox[$i] = ''
                        $aMsgBox[$i][0] = MsgBox(16, "Error", "" & $aMsgBox[$i][1])
                        GUICtrlSetState($Button_Auftrag_bearbeiten, $aState[$aMsgBox[$i][0]])
                        GUICtrlSetState($Button_Auftrag_Anlegen, $aState[$aMsgBox[$i][0]])
                        Return
                    Case FileExists($aRead_Inputbox[$i]) = 0
                        $aMsgBox[$j][0] = MsgBox(16, "Error", "" & $aMsgBox[$j][1])
                        GUICtrlSetState($Button_Auftrag_bearbeiten, $aState[$aMsgBox[$j][0]])
                        GUICtrlSetState($Button_Auftrag_Anlegen, $aState[$aMsgBox[$j][0]])
                        Return
                    Case $i = 6
                        For $k = 1 To 5
                            If $aRead_Inputbox[$k] = $aRead_Inputbox[0] Then
                                $aMsgBox[30][0] = MsgBox(16, "Error", "" & $aMsgBox[30][1])
                                GUICtrlSetState($Button_Auftrag_bearbeiten, $aState[$aMsgBox[30][0]])
                                GUICtrlSetState($Button_Auftrag_Anlegen, $aState[$aMsgBox[30][0]])
                                Return
                            EndIf
                        Next
                EndSwitch
            Next
        EndIf
    EndFunc   ;==>Sortierauftrag_anlegen
    Alles anzeigen
  • Seite auslassen, wenn diese nicht geladen wird

    • Bitnugger
    • 7. August 2018 um 18:49

    Um was für eine Datenbank handelt es sich denn und mit welcher Software greifst du darauf zu? Wenn es sich um eine echte Datenbank handelt, dann kann ich mir kaum vorstellen, dass du die Einträge nicht wie gewünscht filtern können sollt.

  • Gerät aktivieren/deaktivieren

    • Bitnugger
    • 5. August 2018 um 15:25

    Meiner Meinung nach ist das ganze Rumgehampel mit devcon.exe keine Lösung, sondern ein Workaround.

    Zu einer Lösung führen würde, wenn du in der Ereignisanzeige nach Fehlern bz. WLAN suchst und falls vorhanden, diese zu beheben. Evtl. hilft es aber auch schon, den WlanSvc-Dienst verzögert zu starten.

  • Reguläre Ausdrücke Sammlung

    • Bitnugger
    • 4. August 2018 um 23:21
    Zitat von alpines

    Aber _WinAPI_IsInternetConnected returnt auch True wenn eine Lan-Verbindung besteht.

    Dann ist die Funktion unbrauchbar... dann halt so... 8o

    AutoIt
    ;-- TIME_STAMP   2018-08-04 23:16:57   v 0.1
    
    #include <StringConstants.au3>
    #include <Inet.au3>
    
    Global $sURL = 'https://autoit.de/index.php?thread/7892-regul%C3%A4re-ausdr%C3%BCcke-sammlung/&postID=691034#post691034'
    
    ConsoleWrite(_IsUrl($sURL) & @CRLF)
    
    Func _IsUrl($sURL)
        Local Static $sRxPattern = "^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$"
        If _GetIP() Then
            Return SetExtended(InetGetSize($sURL), @error ? False : True)
        Else
            Return StringRegExp($sURL, $sRxPattern)
        EndIf
    EndFunc
    Alles anzeigen
  • Reguläre Ausdrücke Sammlung

    • Bitnugger
    • 4. August 2018 um 19:57
    Zitat von alpines

    Und wenn du offline bist?

    oder so... 8o

    AutoIt
    ;-- TIME_STAMP   2018-08-04 19:55:31   v 0.1
    
    #include <StringConstants.au3>
    #include <WinAPIDiag.au3>
    
    Global $sURL = 'https://autoit.de/index.php?thread/7892-regul%C3%A4re-ausdr%C3%BCcke-sammlung/&postID=691034#post691034'
    
    ConsoleWrite(_IsUrl($sURL) & @CRLF)
    
    Func _IsUrl($sURL)
        Local Static $sRxPattern = "^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$"
        If _WinAPI_IsInternetConnected() Then
            InetGetSize($sURL)
            Return @error ? False : True
        Else
            Return StringRegExp($sURL, $sRxPattern)
        EndIf
    EndFunc
    Alles anzeigen
  • Reguläre Ausdrücke Sammlung

    • Bitnugger
    • 4. August 2018 um 17:50

    Wofür die '/' am Anfang und Ende sind, kann ich dir nicht sagen.

    Als Alternative kannst du dieses Pattern verwenden:

    AutoIt
    Global $sRxPattern = "^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$"
    Global $sURL = 'https://autoit.de/index.php?thread/7892-regul%C3%A4re-ausdr%C3%BCcke-sammlung/&postID=691034#post691034'
    
    ConsoleWrite(StringRegExp($sURL, $sRxPattern) & @CRLF)

    oder du machst es so...

    AutoIt
    Global $sURL = 'https://autoit.de/index.php?thread/7892-regul%C3%A4re-ausdr%C3%BCcke-sammlung/&postID=691034#post691034'
    
    InetGetSize($sURL)
    If @error Then
        ConsoleWrite("Invalid URL" & @CRLF)
    Else
        ConsoleWrite("Valid URL" & @CRLF)
    EndIf
  • Remote Port checken wer connected ist?

    • Bitnugger
    • 3. August 2018 um 18:32
    Zitat von Joschy41

    Kann man den Port überprüfen und sobald eine verbindung besteht, soll eine Aktion ausgeführt werden?

    Kann man schon, doch ich vermute mal, das ist nicht der optimale Weg... denn du sagt uns ja nicht, welches Remote Desktop Programm du verwendest und wieso du eine Aktion auslösen willst, bzw. welche das sein soll.

    Angenommen der zu überprüfende Port ist 49876:

    Hier siehst du, dass eine Verbindung besteht und 8420 ist die PID des Prozesses, der an diesem Port lauscht.

  • Gerät aktivieren/deaktivieren

    • Bitnugger
    • 3. August 2018 um 17:40
    Zitat von Getti

    Im Gegensatz zu den Befehlen im Skript wird also nicht die ganze Hardware-ID in "Gänsefüßchen" gesetzt, sondern lediglich die UND-Zeichen.

    Die Backslashes ("\") musste ich hingegen nicht "escapen".

    Spezielle Zeichen (für die Eingabeaufforderung) in Gänsefüßchen setzen oder sie zu escapen sind zwei verschiedene Dinge... escaped sähe Zeile 29 z.B. so aus...

    $Geraet = 'PCI\VEN_168C^&DEV_0013^&SUBSYS_2051168C^&REV_01'

    Hier ein Bsp. in der Eingabeaufforderung:

  • ISN AutoIt Studio

    • Bitnugger
    • 3. August 2018 um 16:59

    Habe auch noch was gefunden...

    Die Fenster Farb-Toolbox und Text suchen/ersetzen lassen sich nicht mit dem Close-Button in der Titelleiste schließen.

    Das Fenster Springe zu Zeile sollte sich die Größe und Position merken.

  • ISN AutoIt Studio

    • Bitnugger
    • 2. August 2018 um 14:50
    Zitat von BugFix

    ...und das basiert - genau wie ISN Studio - auf Scintilla.

    Ja, jetzt wo du es sagst, fällt es mir wieder ein...

  • ISN AutoIt Studio

    • Bitnugger
    • 1. August 2018 um 18:15
    Zitat von autoBert

    Hat nicht BugFix vor Jahren ein LUA-Skript mit ähnlichen Eigenschaften erstellt, dies könntest du einbauen.

    Ja, hat er... EdgingSelection.LUA - aber das funktioniert doch nur, wie auch alle anderen LUA-Scripte von BugFix , mit SciTE4AutoiIt3. 8o

  • Softwareinventarisierung

    • Bitnugger
    • 27. Juli 2018 um 20:16
    Zitat von autoiter

    Ich will die Diskussion hier in dem Thread jetzt nicht zu weit führen. Die pstools funktionieren schon ganz gut (ich glaube nicht, dass das Problem dort liegt)...

    Benutze doch mal die Methoden hier aus dem Thread und prüfe deine Ergebnisse damit.

    Nein, will ich auch nicht... aber solage dabei wichtige/verwertbare Infos für den TS abfallen, ist das, so denke ich, ok. Habe soeben das Script von Lashandan so angepasst, dass es mir nur eine Ausgabe in der Console macht... und... nein, es sind keine doppelten Einträge vorhanden - auf allen Rechnern! Und nu?

  • Softwareinventarisierung

    • Bitnugger
    • 27. Juli 2018 um 19:28

    Besondere Effekte treten bei mir nur auf, was die Darstellung angeht, aber das hier hat nichts damit zu tun.

    Auf meinem Mini-Server mit Windows 7, und da ist alles auf Standard, also keinen eigenen Skin, habe ich auch einen doppelten Eintrag.

    ...

    Renesas Electronics USB 3.0 Host Controller Driver 3.0.23.0

    Renesas Electronics USB 3.0 Host Controller Driver 3.0.23.0

    ...

  • Softwareinventarisierung

    • Bitnugger
    • 27. Juli 2018 um 17:37

    Unter Programme und Features werden sie nur 1x angezeigt...

    ...

    RealSpeak Solo Direct Steffi 1.0.84.101

    RealSpeak Solo Direct Steffi 1.0.84.101

    ...

    Xperia Companion 2.1.12.0

    Xperia Companion 2.1.12.0

    ...

  • Softwareinventarisierung

    • Bitnugger
    • 27. Juli 2018 um 16:16

    psinfo... gute Idee... und das bei der Hitze... lol... hm, zeigt bei mir einige Einträge doppelt an?!

  • Script mit Login versehen

    • Bitnugger
    • 27. Juli 2018 um 16:06

    Habe mir für eines meiner Tools auch überlegt, wie ich es angehe, damit nur ich es nutzen kann. Vorweg aber... egal was du machst... absolute Sicherheit gibt es nicht!

    Ich mache es in meinem Tool so, dass beim ersten Start ein Token generiert wird, dass dann mit dem eingegebenen Passwort verschlüsselt und als Binary in der Registry gespeichert wird, um damit dann die Daten zu verschlüsseln bzw. entschlüsseln. Alternativ könnte man den verschlüsselten Token auch auf einem USB-Stick speichern...

    Edit: Für den Namen des Registry-Schlüssels generiere ich eine GUID, die dann mit dem Passwort verschlüsselt in einer *.ini gespeichert wird. Diese kann folglich nur gefunden werden, wenn beim nächsten Start das richtige Passwort angegeben wurde.

    Micha_he - walte deines Amtes... :rofl:

    Zitat von timee000

    Pfunkzion

  • _MuteActiveWindow - Sound vom aktiven Fenster stumm schalten.

    • Bitnugger
    • 23. Juli 2018 um 23:08
    Zitat von xTcisloVe
    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.

    Zitat von xTcisloVe
    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. ;)

    Zitat von xTcisloVe

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

    AutoIt
    ;-- TIME_STAMP   2018-07-23 19:30:47   v 0.1
    
    For $i = 1 To 10 Step 1
        Example()
    Next
    
    Func Example()
        Local Static $SoundDevice, $bSwitch = True
        $bSwitch = Not($bSwitch)
        Local $sColor = $SoundDevice = '' ? '!' : $bSwitch ? '-' : '>' ; Inhalt von $SoundDevice für die Demo bei jedem Aufruf farblich hervorheben
        $SoundDevice = $SoundDevice = '' ? "Speaker" : $bSwitch ? "Headset" : "Speaker"
        ConsoleWrite($sColor & '$SoundDevice = ' & $SoundDevice & @CRLF)
    EndFunc
    Alles anzeigen

    pasted-from-clipboard.png

    Zitat von xTcisloVe

    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. ;)

    AutoIt
    ;-- TIME_STAMP   2018-07-23 23:02:58   v 0.1
    
    #Region ;************ Includes ************
    #include <TrayConstants.au3>
    #include <Process.au3>
    #EndRegion ;************ Includes ************
    
    Opt('MustDeclareVars', 1)
    
    Global Const $g_NirCMD = "D:\Batch Space\tools\nircmd.exe", $g_IconPath = "D:\Batch Space\ICON\"
    
    Global $g_sSoundDevice = "Speaker", _
            $g_aHotKeys = [ _
            ['+!M', '_OnHotKey', 'Hotkey Alt+Shift+M could not be set!'], _     ; Hotkey _Func1
            ['+!G', '_OnHotKey', 'Hotkey Alt+Shift+G could not be set!'], _     ; Hotkey _Func2
            ['+!S', '_OnHotKey', 'Hotkey Alt+Shift+S could not be set!'], _     ; Hotkey _SetSpeaker
            ['+!H', '_OnHotKey', 'Hotkey Alt+Shift+H could not be set!'], _     ; Hotkey _SetHeadSet
            ['+!T', '_OnHotKey', 'Hotkey Alt+Shift+S could not be set!'], _     ; Hotkey _ToggleSoundDevice
            ['^+E', '_OnHotKey', 'Hotkey Ctrl+Shift+E could not be set!']] ; Hotkey to exit this script.
    
    OnAutoItExitRegister('_Exit')
    
    _SetHotKeys($g_aHotKeys)
    
    _SetSoundDevice("Speaker") ;-> Selecting Speaker on Startup.
    
    While Sleep(250)
    WEnd
    
    Func _Func1()
        ConsoleWrite('> _Func1' & @CRLF)
        ; Do anything...
    EndFunc   ;==>_Func1
    
    Func _Func2()
        ConsoleWrite('- _Func2' & @CRLF)
        ; Do anything...
    EndFunc   ;==>_Func2
    
    Func _SetSoundDevice($sSoundDevice)
        Return $sSoundDevice = "Speaker" ? _SetSpeaker() : _SetHeadSet()
    EndFunc   ;==>_SetSoundDevice
    
    Func _SetSpeaker()
        $g_sSoundDevice = "Speaker"
        Run($g_NirCMD & " setdefaultsounddevice " & "Speaker")
    EndFunc   ;==>_SetSpeaker
    
    Func _SetHeadSet()
        $g_sSoundDevice = "Headset"
        Run($g_NirCMD & " setdefaultsounddevice " & "Headset")
    EndFunc   ;==>_SetHeadSet
    
    Func _ToggleSoundDevice()
        Local $sCurrentSoundDevice = StringLeft(_GetCurrentSoundDevice(), 7), $vRes
    
        $g_sSoundDevice = $sCurrentSoundDevice = "Speaker" ? "Headset" : "Speaker"
    
        Run($g_NirCMD & " setdefaultsounddevice " & $g_sSoundDevice)
    
        $vRes = TrayTip($g_sSoundDevice & " active.", " ", 1, $TIP_ICONASTERISK) & TraySetToolTip($g_sSoundDevice & " active.") & TraySetIcon($g_IconPath & $g_sSoundDevice & ".ico")
        ;Local $sActualWinTitle = WinGetTitle("[ACTIVE]")
        AppMinMax(0)
        If $g_sSoundDevice = "Headset" And 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 $vRes = ShellExecute("C:\Program Files\TeamSpeak 3 Client\ts3client_win64.exe")
            If $vRes Then WinWaitActive("TeamSpeak3", "", 20)
        EndIf
        ; !b = Alt + b -> Mute Mic/Speaker in Teamspeak, !m = Alt + m -> Unmute Mic/Speaker in Teamspeak.
        If ProcessExists("ts3client_win64.exe") Then $vRes = WinActivate("TeamSpeak3") & $g_sSoundDevice = "Speaker" ? Send("!b") : $g_sSoundDevice = "Headset" ? Send("!m") : ''
        ;If WinExists($sActualWinTitle) Then WinActivate($sActualWinTitle)
        AppMinMax(1)
    EndFunc   ;==>_ToggleSoundDevice
    
    Func AppMinMax($iMinMax) ;==>AppMinMax function.
        Local Static $aTray = [["Minimized: ", $TRAY_ICONSTATE_FLASH], ["Restored: ", $TRAY_ICONSTATE_STOPFLASH]]
        If $iMinMax Then
            Local $vRes, $sLine, $sActualWinTitle = WinGetHandle("[ACTIVE]"), $sProcessName = _ProcessGetName(WinGetProcess($sActualWinTitle)), $aFile = FileReadToArray("D:\Batch Space\WindowsAutomation\Games.txt")
            For $i = 1 To UBound($aFile) - 1 Step 1
                If $aFile[$i] = $sProcessName And WinExists($sActualWinTitle) Then
                    WinSetState($sActualWinTitle, "", @SW_MAXIMIZE)
                    ExitLoop
                EndIf
            Next
        Else
            WinSetState($sActualWinTitle, "", @SW_MINIMIZE)
        EndIf
        $vRes = TraySetToolTip($aTray[$iMinMax][0] & $sActualWinTitle) & TraySetState($aTray[$iMinMax][1])
    EndFunc   ;==>AppMinMax
    
    Func _GetCurrentSoundDevice()
        ; ...?
        Local Static $aGetCurrentSoundDevice = ['Speaker', 'Headset']
        Return $aGetCurrentSoundDevice[Random(0, 1, 1)]
    EndFunc   ;==>_GetCurrentSoundDevice
    
    Func _sMsgBox($sTitle, $sButtons, $sText, $sOptions)
        ; ...?
        Local $iRandom = Random(0, 1, 1)
    
        Return SetExtended($iRandom, $iRandom ? "BlaBla" : "BlubBlub")
    EndFunc   ;==>_sMsgBox
    
    Func _OnHotKey()
        Switch @HotKeyPressed
            Case '+!M'
                _Func1()
            Case '+!G'
                _Func2()
            Case '+!S'
                _SetSpeaker()
            Case '+!H'
                _SetHeadSet()
            Case '+!T'
                _ToggleSoundDevice()
            Case '^+E'
                Exit
        EndSwitch
    EndFunc   ;==>_OnHotKey
    
    Func _SetHotKeys(ByRef $g_aHotKeys, $bExit = True)
        For $i = 0 To UBound($g_aHotKeys) - 1 Step 1
            If Not HotKeySet($g_aHotKeys[$i][0], $g_aHotKeys[$i][1]) Then
                If $g_aHotKeys[$i][2] Then MsgBox(16, @ScriptName, $g_aHotKeys[$i][2])
                If $bExit Then Exit 1
            EndIf
        Next
        Return True
    EndFunc   ;==>_SetHotKeys
    
    Func _Exit()
        If UBound($g_aHotKeys) Then
            For $i = 0 To UBound($g_aHotKeys) - 1 Step 1
                HotKeySet($g_aHotKeys[$i][0])
            Next
        EndIf
    EndFunc   ;==>_Exit
    Alles anzeigen

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

  • _MuteActiveWindow - Sound vom aktiven Fenster stumm schalten.

    • Bitnugger
    • 23. Juli 2018 um 00:23
    Zitat von autoiter

    Ihr missversteht das einfach. Ich möchte darauf hinweisen, dass in der Hilfe nicht steht, dass HotkesSet keine Funktionen mit Parametern unterstützt. Da steht nur, dass dabei keine Parameter zugewiesen werden können. Das ist ein Unterschied..

    Habe ich doch geschrieben...

    Zitat von Bitnugger

    PS: HotKeySet akzeptiert auch Funktionen mit Parameter, ignoriert diese aber, da sie nicht an die Funktion übergeben werden können, wenn das ensprechende HotKey gedrückt wurde.

  • AutoIt3Wrapper - StripOnly/StripFunc Error: Found Call() statement using unsolvable Func

    • Bitnugger
    • 23. Juli 2018 um 00:20
    Zitat von borsTiHD

    Die Funktionen quasi vorher schon deklarieren?

    Ja, genauer gesagt, eine Array-Variable deklarieren und die verwendeten Funktionsnamen in diese eintragen.

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™