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