- Offizieller Beitrag
Mit diesem Script kann man den Start von Firefox und InternetExplorer überwachen. Der Zugriff ist erst nach der richtigen Eingabe eines Passworts zulässig.
Das Script läuft im Hintergrund und wartet darauf, dass der InternetExplorer bzw. Firefox gestartet wird. Ist das der Fall, so wird ein Passwort-Eingabe-Fenster geöffnet. Bei Eingabe eines falschen Passworts wird der Browser wieder beendet.
Bei richtiger Eingabe kann man den Browser ganz normal benutzen und zwar so lange bis man alle Browserfenster wieder geschlossen hat. Danach muss man beim öffnen eines neuen Browserfensters wieder das Passwort eingeben.
Das Passwort im Script ist auf "1234" voreingestellt. Kann aber geändert werden (wichtig: max. 10 Stellen und nur Zahlen)
Der Hotkey zum beenden des Programms ist auf [STRG]+[ALT]+[q] voreingestellt.
Screenshot:
autoit.de/wcf/attachment/3675/
Spoiler anzeigen
#NoTrayIcon
#include<GUIConstantsEx.au3>
#include<StaticConstants.au3>
#include<WindowsConstants.au3>
Opt('GUIOnEventMode', 1) ; OnEventMode: On
Opt('GUICloseOnESC', 0)
Opt('WinTitleMatchMode', 2)
Global $sPasswort = 1234 ; hier den Zugriffscode eintragen
HotKeySet('^!q', '_End') ; Hotkey [STRG]+[ALT]+[q] zum beenden des Programms
Global Const $WS_EX_COMPOSITED = 0x02000000
Global $hGui = GUICreate('Zugriffscode', 140, 222, -1, -1, $WS_POPUPWINDOW, BitOR($WS_EX_TOOLWINDOW, $WS_EX_COMPOSITED))
GUISetBkColor(0xEEEEEE)
GUICtrlCreateLabel('Zugriffscode eingeben:', 8, 8, 124, 20)
Global $sBlinkChar = Chr(144) ; das blinkende Cursorzeichen
Global $hDisplay = GUICtrlCreateLabel($sBlinkChar, 6, 28, 126, 20, $SS_RIGHT, $WS_EX_STATICEDGE)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xEE4444)
GUICtrlSetFont(-1, 14, 600, 0, 'Courier')
Global $aButtonName = StringSplit('7|8|9|4|5|6|1|2|3|C|0|OK', '|', 2)
Global $ahButton[UBound($aButtonName)]
GUICtrlCreateGroup('', 6, 48, 126, 168)
For $i = 0 To UBound($aButtonName) - 1
$ahButton[$i] = GUICtrlCreateButton($aButtonName[$i], 12 + Mod($i, 3) * 40, 58 + Int($i / 3) * 40, 34, 32)
GUICtrlSetFont(-1, 10, 600, 0, 'Verdana')
GUICtrlSetOnEvent(-1, '_ButtonKlick')
Next
GUICtrlCreateGroup('', -99, -99, 1, 1)
GUICtrlSetState($ahButton[11], BitOR($GUI_DEFBUTTON, $GUI_FOCUS))
Global $hShadow = GUICreate('Shadow', @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW)
GUISetBkColor(0x000000)
WinSetTrans($hShadow, '', 200)
WinSetOnTop($hGui, '', 1)
AdlibEnable('_Blink', 500)
GUIRegisterMsg($WM_ACTIVATE, 'WM_ACTIVATE')
_SetHotKey(True)
Global $bPass = False
While 1
If WinExists('Mozilla Firefox') Or WinExists('Internet Explorer') Then
If $bPass Then
GUISetState(@SW_HIDE, $hShadow)
GUISetState(@SW_HIDE, $hGui)
Else
GUISetState(@SW_SHOW, $hShadow)
GUISetState(@SW_SHOW, $hGui)
if Not WinActive($hGui) Then
WinActivate($hShadow)
WinActivate($hGui)
EndIf
EndIf
Else
$bPass = False
EndIf
Sleep(30)
WEnd
Func _End()
Exit
EndFunc ;==>_End
Func _ButtonKlick()
Local $sDisplay = GUICtrlRead($hDisplay)
Local $iButton = @GUI_CtrlId - $ahButton[0]
Switch $iButton
Case 11 ; 'OK'
If StringTrimRight(GUICtrlRead($hDisplay), 1) = $sPasswort Then
$bPass = True
GUICtrlSetData($hDisplay, $sBlinkChar)
GUISetState(@SW_HIDE, $hShadow)
GUISetState(@SW_HIDE, $hGui)
Else
ProcessClose('firefox.exe')
ProcessClose('iexplore.exe')
GUICtrlSetData($hDisplay, $sBlinkChar)
GUISetState(@SW_HIDE, $hShadow)
GUISetState(@SW_HIDE, $hGui)
EndIf
Case 9 ; 'C'
GUICtrlSetData($hDisplay, $sBlinkChar)
Case Else ; Zahlentasten
If StringLen($sDisplay) <= 10 Then
$sDisplay = StringTrimRight($sDisplay, 1) & $aButtonName[$iButton] & $sBlinkChar
GUICtrlSetData($hDisplay, $sDisplay)
Else
Beep(400, 50)
EndIf
EndSwitch
EndFunc ;==>_ButtonKlick
Func _HotKey()
Local $sDisplay = GUICtrlRead($hDisplay)
Local $HotKey = @HotKeyPressed
Local $iButton = StringRegExpReplace($HotKey, '{NUMPAD(.+)}', '$1')
Switch $HotKey
Case '{ENTER}' ; 'OK'
If StringTrimRight(GUICtrlRead($hDisplay), 1) = $sPasswort Then
$bPass = True
GUICtrlSetData($hDisplay, $sBlinkChar)
GUISetState(@SW_HIDE, $hShadow)
GUISetState(@SW_HIDE, $hGui)
Else
ProcessClose('firefox.exe')
ProcessClose('iexplore.exe')
GUICtrlSetData($hDisplay, $sBlinkChar)
GUISetState(@SW_HIDE, $hShadow)
GUISetState(@SW_HIDE, $hGui)
EndIf
Case '{NUMPADDOT}' ; 'C'
GUICtrlSetData($hDisplay, $sBlinkChar)
Case Else ; Zahlentasten
If StringLen($sDisplay) <= 10 Then
$sDisplay = StringTrimRight($sDisplay, 1) & $iButton & $sBlinkChar
GUICtrlSetData($hDisplay, $sDisplay)
Else
Beep(400, 50)
EndIf
EndSwitch
EndFunc ;==>_HotKey
Func _SetHotKey($bOnOff)
Local $aHotKeys = StringSplit('{NUMPAD1}|{NUMPAD2}|{NUMPAD3}|{NUMPAD4}|{NUMPAD5}|{NUMPAD6}|{NUMPAD7}|{NUMPAD8}|{NUMPAD9}|{NUMPADDOT}|{NUMPAD0}|{ENTER}', '|', 2)
For $i = 0 To UBound($aHotKeys) - 1
If $bOnOff Then
HotKeySet($aHotKeys[$i], '_HotKey')
Else
HotKeySet($aHotKeys[$i])
EndIf
Next
EndFunc ;==>_SetHotKey
Func WM_ACTIVATE($hWnd, $Msg, $wParam, $lParam)
_SetHotkey(BitAND($wParam, 0x0000FFFF))
EndFunc ;==>WM_ACTIVATE
Func _Blink()
Local $sDisplay = GUICtrlRead($hDisplay)
Switch StringRight($sDisplay, 1)
Case $sBlinkChar
$sDisplay = StringReplace($sDisplay, $sBlinkChar, ' ')
Case ' '
$sDisplay = StringReplace($sDisplay, ' ', $sBlinkChar)
EndSwitch
GUICtrlSetData($hDisplay, $sDisplay)
EndFunc ;==>_Blink