Guten Morgen alle zusammen,
ich habe derzeit eine kleine Herausforderung.
Bei meinem Programm soll beim ersten Start ein Passwort vergeben werden. Dies wird entweder durch drücken eines Buttons oder durch ENTER gespeichert.
War nun allerdings der Fokus nicht auf meinem Programmfenster sondern ich habe zum Beispiel Notepad geöffnet und habe dort Enter gedrückt, hat er natürlich trotzdem die ENTER "drücken" Funktion ausgeführt, da ich nicht angegeben habe, dass er dies nur ausführen soll wenn das Fenster auch aktiv ist.
Nun habe ich das Skript soweit umgeschrieben, dass er in der While-Schleife immer erst prüft ob das Fenster aktiv ist und nur dann die Funktion _enter ausführt.
Jedoch kann ich mein skript auf diesen Wege sogar minimieren und dennoch wendet er die _enter Funktion an was gar nicht sein dürfte. Kann hier jemand meinen Fehler finden?
[autoit]
#RequireAdmin
Opt("TrayIconHide", 1)
[/autoit][autoit][/autoit][autoit]#include <WindowsConstants.au3>
#include <StructureConstants.au3>
#include <GUIConstants.au3>
#include <String.au3>
#include-once 'UPS-login.exe'
$crypt = 'QWERTZ'
$winuser = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\winlogon", "Defaultusername")
$loginGui = GUICreate("FIRST RUN - Choose Master PW", 270, 70)
GUICtrlCreateLabel("Please choose a Master Password to protect your data:", 5, 5)
$input = GUICtrlCreateInput("", 5, 20, 260, 20, 0x21)
$button = GUICtrlCreateButton("Save", 110, 43, 55, 25)
$read = GUICtrlRead($input)
$check = IniRead(@WindowsDir & "\" & $winuser & "pws.ini", "MASTER", "MASTER", "")
If $check = "" then
GUIsetstate()
Else
If not FileExists(@TempDir & "\UPS-login.exe") Then
FileInstall("C:\Documents and Settings\751076\Desktop\UPS\UPS-login.exe", @TempDir & "\UPS-login.exe")
EndIf
ShellExecute(@TempDir & "\UPS-login.exe")
Exit
EndIf
Func _enter()
$read = GUICtrlRead($input)
IniWrite(@WindowsDir & "\" & $winuser & "pws.ini", "MASTER", "MASTER", _StringEncrypt(1, GUICtrlRead($input), $crypt, 2))
MsgBox(0, "", "Password saved successful!")
If not FileExists(@TempDir & "\UPS-login.exe") Then
FileInstall("C:\Documents and Settings\751076\Desktop\UPS\UPS-login.exe", @TempDir & "\UPS-login.exe")
EndIf
ShellExecute(@TempDir & "\UPS-login.exe")
Exit
EndFunc
While 1
If WinActive("FIRST RUN - Choose Master PW") Then
HotKeySet ("{enter}", "_enter")
EndIf
$msg = GUIgetmsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $button
$read = GUICtrlRead($input)
IniWrite(@WindowsDir & "\" & $winuser & "pws.ini", "MASTER", "MASTER", _StringEncrypt(1, GUICtrlRead($input), $crypt, 2))
MsgBox(0, "", "Password saved successful!")
If not FileExists(@TempDir & "\UPS-login.exe") Then
FileInstall("C:\Documents and Settings\751076\Desktop\UPS\UPS-login.exe", @TempDir & "\UPS-login.exe")
EndIf
ShellExecute(@TempDir & "\UPS-login.exe")
Exit
EndSwitch
WEnd