Browserstart überwachen

    • 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
    [autoit]


    #NoTrayIcon
    #include<GUIConstantsEx.au3>
    #include<StaticConstants.au3>
    #include<WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('GUIOnEventMode', 1) ; OnEventMode: On
    Opt('GUICloseOnESC', 0)
    Opt('WinTitleMatchMode', 2)

    [/autoit] [autoit][/autoit] [autoit]

    Global $sPasswort = 1234 ; hier den Zugriffscode eintragen
    HotKeySet('^!q', '_End') ; Hotkey [STRG]+[ALT]+[q] zum beenden des Programms

    [/autoit] [autoit][/autoit] [autoit]

    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))

    [/autoit] [autoit][/autoit] [autoit]

    Global $hShadow = GUICreate('Shadow', @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW)
    GUISetBkColor(0x000000)
    WinSetTrans($hShadow, '', 200)

    [/autoit] [autoit][/autoit] [autoit]

    WinSetOnTop($hGui, '', 1)
    AdlibEnable('_Blink', 500)

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func _End()
    Exit
    EndFunc ;==>_End

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_ACTIVATE($hWnd, $Msg, $wParam, $lParam)
    _SetHotkey(BitAND($wParam, 0x0000FFFF))
    EndFunc ;==>WM_ACTIVATE

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]
  • HEUL ganz doll !!!
    Genau das wollte ich auch erstellen, aber jetzt lösche ich meines :(

    Naja, Du warst halt schneller.

    LG,
    Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Wofür braucht man denn sowas? ;)
    Würd es nicht reichen die Verknüpfung zu einem Programm mit Passwort eingabe zu leiten anstatt extra ein so kompliziertes programm zu schreiben?^^

  • Wofür braucht man denn sowas? ;)
    Würd es nicht reichen die Verknüpfung zu einem Programm mit Passwort eingabe zu leiten anstatt extra ein so kompliziertes programm zu schreiben?^^

    Wenn Du diese Frage schon stellst, wieso nicht die Lösung die Du vor schlägst hier darstellen und das evtl. mit AutoIt???

    Gruss,
    Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

    • Offizieller Beitrag

    Wozu man das braucht, weiß ich eigentlich auch nicht so genau... :whistling:
    Vielleicht auf einem Firmen-PC, wo dann nur "berechtigte" Personen den Browser starten dürfen?

    Und der Unterschied zwischen diesen Script und einer Passwort-Eingabe-Verknüpfung ist der, dass man mit diesem Script nicht bei jedem Start des Browsers das Passwort eingeben muss, sondern nur, wenn vorher kein Browserfenster geöffnet war.

  • na und ausserdem... ne verknüpfung kann man ma eben schnell umgehn...
    wenn autoit den prozess überwacht ist das schon schwieriger :)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Bei mir funktioniert es nicht. AutoIt meckert:

    Code
    (31) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
  • Ist es denn nicht möglich die .exe umzubennen bzw. die Dateien in ein anderes Verzeichnis zu packen ?
    Falls doch, würde ich als "Installation" machen,dass man eine .exe auswählen muss,welche dann eine Signatur / Dateiinformation bekommt,woran Sie immer erkannt wird.....

    Und kann man den prozess nicht einfach abschießen per TaskManager/cmd/autoIt etc. ?

    Zitat

    Programmieren ist so lange lustig bis ein Fehler auftritt!


    ~ Dankeschön

    • Offizieller Beitrag

    Natürlich ist das Script nicht 100% sicher. Das sollte eigentlich auch nur als (ausbaufähiges) Beispiel dienen. :)
    Wobei es immer nur eine Frage des Aufwands ist. Zum Beispiel kann man jemanden mit Admin-Rechten den Zugriff auf einen Browser nicht verwehren. Oder wenn derjenige Zugriff auf die Laufwerke hat und einen Neustart initialisieren kann, dann kann er auch von CD/DVD booten und so weiter und so weiter.
    Es kommt halt auf die weiteren Umstände an. Das kann jeder für sich wohl besser beurteilen und das Script dann dahingehend ausbauen.