Du kannst _WinAPI_InvalidateRect verwenden um das Control neu zeichnen zu lassen, dann wird das Passwortchar auch aktualisiert.
Und bitte nur einmal _SendMessage verwenden, ansonsten wird das Control mit Millionen (und ich untertreibe nicht) Nachrichten zugemüllt.
C
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <SendMessage.au3>
#include <WinAPI.au3>
Global $bSendAlready = False
Global $hGUI = GUICreate("Form1", 293, 136, 192, 124)
Global $hInput = GUICtrlCreateInput("Input1", 48, 64, 161, 21)
_SendMessage(GUICtrlGetHandle($hInput), $EM_SETPASSWORDCHAR, Asc("*"), 0)
Global $hIcon = GUICtrlCreateIcon("C:\Windows\System32\shell32.dll", -105, 232, 58, 32, 32)
GUISetState(@SW_SHOW, $hGUI)
While Sleep(10)
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $hIcon
ConsoleWrite("Zeige an" & @CRLF)
_SendMessage(GUICtrlGetHandle($hInput), $EM_SETPASSWORDCHAR, 0, 0)
_WinAPI_InvalidateRect(GUICtrlGetHandle($hInput))
$bSendAlready = True
Case $GUI_EVENT_PRIMARYUP
If $bSendAlready Then
ConsoleWrite("Verstecke" & @CRLF)
_SendMessage(GUICtrlGetHandle($hInput), $EM_SETPASSWORDCHAR, Asc("*"), 0)
_WinAPI_InvalidateRect(GUICtrlGetHandle($hInput))
$bSendAlready = False
EndIf
EndSwitch
WEnd
Alles anzeigen