Hallo zusammen,
ich habe ein kleines Problem.
Und zwar möchte ich das mein GUI Fenster mitbekommt sobald die Hoch oder Runter Pfieltaste gedrückt wird.
Skript:
Spoiler anzeigen
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <WinAPI.au3>
#include <File.au3>
#include <ButtonConstants.au3>
#include <Misc.au3>
Global $HA = @DesktopHeight * 3 / 4
Global $VA = @DesktopWidth / 3
Global $Farbe = 0x00BFFF
Global $Fokusfarbe = 0x4169E1
global $a_buttons[5]=["1","2","3","4","5"]
[/autoit] [autoit][/autoit] [autoit]#region HauptGUI
Global $binfo = "1|2|3|4|5" ;Buttonbeschriftung für jeden Button mit | getrennt eingeben -> Anzahl der Beschriftungen bestimmt gleichzeitig die Anzahl der Buttons
Global $abfinfo = StringSplit($binfo, '|')
Global $banzahl = $abfinfo[0]
Global $babstandleft = 50 ;Abstand links und rechts zur HauptGUI
Global $babstandtop = 10 ;Abstand zwischen den Buttons
Global $bwidth = $VA - 2 * $babstandleft ;Button Left ausrechnen
Global $bheight = $HA / $banzahl - $babstandtop * ($banzahl + 1) / $banzahl ;Button Höhe in Abhängigkeit zur Auflösung ausrechnen
Global $HauptGUI = GUICreate("HTPC", $VA, $HA, -1, -1, BitOR($WS_POPUP, $WS_BORDER, $WS_CLIPSIBLINGS))
;Buttons erstellen und Button TOP ausrechnen
For $i = 1 To $banzahl
Global $Button = GUICtrlCreateButton($abfinfo[$i], $babstandleft, $i * $babstandtop + ($i - 1) * $bheight, $bwidth, $bheight, $BS_BITMAP)
GUICtrlSetFont(-1, 20)
GUICtrlSetBkColor(-1, $Farbe)
Next
#endregion HauptGUI
Global $last_focus = GUICtrlGetHandle(-1)
Global $fokusGUI = $HauptGUI
GUIRegisterMsg($WM_User, "MY_WM_USER")
GUISetState(@SW_SHOW, $HauptGUI)
WinSetOnTop($HauptGUI, "", 1)
While 1
[/autoit] [autoit][/autoit] [autoit]$msg = GUIGetMsg()
Switch $msg
case 5
_Exit()
EndSwitch
WEnd
Func _Exit()
Exit
endfunc
Func MY_WM_USER($hwnd, $msg, $wParam, $lParam)
$low_word = BitAND($wParam, 0xFFFF)
$high_word = BitShift($wParam, 16)
ConsoleWrite("wparam: "&$low_word & @crlf)
ConsoleWrite("lparam: "&$high_word & @crlf)
Setbuttontext()
_SetBKColor()
EndFunc ;==>MY_WM_USER
Func _SetBKColor()
Local $Button = WinGetHandle(_WinAPI_GetFocus())
GUICtrlSetBkColor(_WinAPI_GetDlgCtrlID($last_focus), $Farbe)
GUICtrlSetBkColor(_WinAPI_GetDlgCtrlID($Button), $Fokusfarbe)
$last_focus = $Button
EndFunc ;==>_SetBKColor
Func Setbuttontext($left=0)
GUICtrlSetState(5, $GUI_FOCUS)
_ArrayPush($a_buttons, $a_buttons[0], $left)
for $i =1 to $banzahl
GUICtrlSetData($i+2, $a_buttons[$i-1])
Next
endfunc
Ich habe ein Array mit sagen wir 100 Namen drin und möchte davon immer 5 Stück verwenden um die Buttons zu benennen (ich denke durch ausführen des Skriptes wird klarer was ich vorhabe).
Das klappt mit _Arraypush auch einwandfrei.
Allerdings kann ich nicht erkennen ob jetzt Pfeiltste-Hoch oder Pfeiltaste-Runter gedrückt wurde und so stimmt die Funktion nur in eine Richtung.
Gibt es dafür eine Lösung ohne Hotkeyset oder _Ispressed?
WM_User bringt mir leider nicht verwertbares.
Gruß nuts