Schönen Abend zusammen.
Ist es möglich, ein Inputfeld(GUICtrlCreateInput) als Passwortabfrage zu machen, sodass nur Sternchen(****)angezeigt werden?
Bei einer InputBox ist das ja möglich. Allerdings soll das in eine GUI integriert werden und ohne InputBox laufen.
Im Moment fällt mir nur ein, jeden Tastendruck abzufangen, in einer VAriable zu speichern und stattdessen ein * auszugeben.
Das ist aber nicht unbedingt einfach.
Ich hoffe, ihr habt eine Lösung für mich.
GUICtrlCreateInput als Passwortabfrage??
-
- [ offen ]
-
penta.phoenix -
2. Juni 2008 um 20:01 -
Geschlossen -
Erledigt
-
-
Hi, steht in der Hilfe zu der Func Guictrlcreateinput
Spoiler anzeigen
[autoit]#include<GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include<EditConstants.au3>Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]Local $file, $btn, $msg
[/autoit] [autoit][/autoit] [autoit]
GUICreate(" My GUI input acceptfile", 320, 120, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45)
$file = GUICtrlCreateInput("", 10, 5, 300, 20, $ES_PASSWORD)
$btn = GUICtrlCreateButton("Ok", 40, 75, 60, 20)GUISetState()
[/autoit] [autoit][/autoit] [autoit]$msg = 0
[/autoit]
While $msg <> $GUI_EVENT_CLOSE
$msg = GUIGetMsg()
Select
Case $msg = $btn
ExitLoop
EndSelect
WEnd -
Danke, habs auch grad entdeckt.
Leider sehe ich trotz Brille manchmal nicht die einfachsten Dinge, wie z.B. Links zu Style-Liste.Edit: Ohne kleinlich zu wirken, aber da erscheinen bei mir fette Punkte anstatt Sternchen. Ist zwar nur ein Schönheitsfehler, aber gibt es keine Sternchen für mich??
-
Du kannst doch andere Zeichen benutzen
-
Du kannst doch andere Zeichen benutzen
Wie meinen?? :wacko:
Natürlich kann ich die Punkte verwenden, dass sagte ich ja bereits, aber Sternchen wären schöner. -
- Offizieller Beitrag
Das Zeichen legt das Betriebssystem (genauer GUI-Manager) fest, bei Vista sind es fette schwarze Punkte, unter XP auch, vorher waren es Sternchen (wenn ich mich richtig erinnere)...
Aus Benutzersicht wäre es mir unangenehm, wenn du das Zeichen tauschst, weil ich eine Erwartung daran habe, wie so ein Feld unter meinem Betriebssystem aussieht ;).peethebee
-
Ach so, ich hatte die Hoffnung, man könnte es irgendwie im Input selber ändern.
Wenn ich dich richtig verstanden habe, geht das aber nur über eine Änderung, die das komplette System betrifft.
Auch wenn ich es jetzt nicht ausprobieren möchte: Das müsste doch auch temporär gehen. Also ändern, Input anzeigen, wieder ändern.
Oder ist das nicht möglich?? -
Sorry, da hab ich was verwechselt (bei einer InputBox kann man das Zeichen ändern.
Aber falls das WinXP bzw. das Vista Theme dran schuld ist kann man es mit irgend so einem DLL-Call für das Programm temporär abschalten (hab ihn aber grad nicht im Kopf) -
- Offizieller Beitrag
Hallo,
geht das?
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#Include <SendMessage.au3>Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]Local $file, $btn, $msg
[/autoit] [autoit][/autoit] [autoit]
GUICreate(" My GUI input acceptfile", 320, 120, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45)
$file = GUICtrlCreateInput("", 10, 5, 300, 20, $ES_PASSWORD)
$btn = GUICtrlCreateButton("Ok", 40, 75, 60, 20)_SendMessage(GUICtrlGetHandle($file), $EM_SETPASSWORDCHAR, Asc('*'), 0)
[/autoit] [autoit][/autoit] [autoit]GUISetState()
[/autoit] [autoit][/autoit] [autoit]$msg = 0
[/autoit]
While $msg <> $GUI_EVENT_CLOSE
$msg = GUIGetMsg()
Select
Case $msg = $btn
ExitLoop
EndSelect
WEnd -
Ja, das geht Sogar, wenn man den Style $ES_PASSWORD Nicht gesetzt hat
_SendMessage(GUICtrlGetHandle($file), $EM_SETPASSWORDCHAR, 0, 0)
Schaltet die Box auf Nicht-Passwort Anzeige zurückSpoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#Include <SendMessage.au3>Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]Local $file, $btn, $msg, $btn1,$btn2,$char
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICreate(" My GUI input acceptfile", 320, 120, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45)
$file = GUICtrlCreateInput("", 10, 5, 300, 20)
GUICtrlSetFont(-1,10,0,0,"Arial")
$btn = GUICtrlCreateButton("Ok", 40, 75, 60, 20)
$btn1 = GUICtrlCreateButton("Set PW-Char:", 20, 35, 80, 20)
$char = GUICtrlCreateInput(ChrW(0x25CF),100,35,30,20)
GUICtrlSetFont(-1,10,0,0,"Arial")
GUICtrlSetLimit($char,1)
$btn2 = GUICtrlCreateLabel("Leave empty to unhide PW", 140, 35, 200, 20)GUISetState()
[/autoit] [autoit][/autoit] [autoit]$msg = 0
[/autoit]
While $msg <> $GUI_EVENT_CLOSE
$msg = GUIGetMsg()
Select
Case $msg = $btn
ExitLoop
Case $msg = $btn1
_SendMessageAW(GUICtrlGetHandle($file), $EM_SETPASSWORDCHAR, AscW(GUICtrlRead($char)), 0)
GUICtrlSetStyle($file,-1)
EndSelect
WEnd
; Tries to use Unicode-function, if it doens't work, ANSI
Func _SendMessageAW($hWnd, $iMsg, $wParam = 0, $lParam = 0, $iReturn = 0, $wParamType = "wparam", $lParamType = "lparam", $sReturnType = "lparam")
Local $aResult = DllCall("user32.dll", $sReturnType, "SendMessageW", "hwnd", $hWnd, "int", $iMsg, $wParamType, $wParam, $lParamType, $lParam)
If @error Then $aResult = DllCall("user32.dll", $sReturnType, "SendMessage", "hwnd", $hWnd, "int", $iMsg, $wParamType, $wParam, $lParamType, $lParam)
If @error Then Return SetError(@error, @extended, "")
If $iReturn >= 0 And $iReturn <= 4 Then Return $aResult[$iReturn]
Return $aResult
EndFunc ;==>_SendMessage