Hallo, einer von euch hatte die Idee mit der Fensterliste... Ich habs geschafft, Wenn sich ein neues Fenster öffnet geht der PC aus
Es ist ziemlich "agressiv"... Hier ist mal nur die Engine, damit es geht muss man es anmachen, es startet noch nicht automatisch... Eben nur um mal den Code anzugucken...
Damit es geht müsst ihr noch mit dem Autoit-befehl driveGetSerial (..) herausfinden wie die Serial von eurem stick ist...
Und noch was ganz wichtiges: Wozu ist diese Tool überhaupt da???
Es soll den zweck haben das ihr einen USB-STICK wie einen Schlüssel benutzen könnt.
(Rechner geht an, wenn ihr nicht den passenden Stick einsteckt wird er mit einem großen Fenster verpserrt...)
Die benötigete Data.ini (Ihr müsst sie "per Hand" noch ausfüllen...)
Data.ini
Spoiler anzeigen
data.ini
Erklärungen:
Serial.........Die serial nummer müsst ihr mit DriveGetSerial herausfinden und hier eintragen...
methode........Das was passiert wenn ein Fenster geöffnet wird....Methoden wie in den Batch-skripten:
Herunterfahren Neustarten abmelden
-s -r alles andere... z.B.: digjghigkm Wäre das gleich wie log off...
letter........Der Laufwerksbuchstabe des Sticks (Du findest ihn unter Arbeitspaltz)
Ich bin natürlich dabei ein Tool zu schreiben welches dashier automatisch übernimmt xD
Viel spaß, Das Schwert!!!
[ops]
serial=469949998
methode=log off
letter=I:
Der Code
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#include <Array.au3>
#include <String.au3>
HotKeySet ("Q", "_exist") ;!!!!!!!! Unbedingt vor veröfentlichung löschen!!!!!!!;;;;;Dient nur als not-aus für Testphase
If IniRead ("data.ini", "ops", "password", "False") == "True" Then HotKeySet ("^p", "pwd")
$ini = IniRead ( "data.ini", "ops", "serial", "noser" )
$letter = IniRead ("data.ini", "ops", "letter", "nole")
If $letter = "nole" Then
MsgBox (0, "Fehler!", "Kein Laufwerk-buchstabe angegeben!")
Exit
EndIf
If IniRead ("data.ini", "ops", "methode", "0") == "-s" Then
$methode = 4
ElseIf IniRead ("data.ini", "ops", "methode", "0") == "-r" Then
$methode = Shutdown (2)
Else
$methode = 0
EndIf
_trystart ()
Func _trystart ()
If $ini = "noser" Then
MsgBox (0, "Fehler!", "Keine Serial-nummer definiert!")
Exit
EndIf
$drive = DriveGetSerial ($letter)
If $drive = $ini Then _exist ()
_nodrive ()
EndFunc
Func pwd ()
If InputBox ("Security system", "Geben sie das Passwort ein!", "", "*") == _StringEncrypt (0, IniRead ("data.ini", "ops", "pwd", ""), "pwdpasswort") Then
_exist ()
EndIf
EndFunc
Func _exist ()
$drive = ""
If WinExists ( "Security" ) Then WinClose ( "Security" )
Exit
EndFunc
Func _nodrive ()
#Region ### START Koda GUI section ### Form=C:\Programme\AutoIt3\Extras\FD\Forms\Security v2.kxf
$Form1 = GUICreate("Security", @desktopwidth, @desktopheight, 0, 2, $WS_POPUP)
$Label1 = GUICtrlCreateLabel("Security alert: No acces to system!", 304, 320, 682, 54)
GUICtrlSetFont(-1, 26, 400, 0, "Arial Black")
$again = GUICtrlCreateButton("Try-again", 0, 712, 75, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUISetStyle ( $WS_POPUP, $WS_EX_TOPMOST )
$list = WinList ()
While 1
$list2 = WinList ()
If WinExists ("Windows Task-Manager") Then Shutdown ($methode)
If $list[0][0] <> $list2[0][0] Then
If WinExists ("", "Dieser Datenträger bzw. das Gerät enthält Inhalte verschiedener Typen.") Then WinClose ("", "Dieser Datenträger bzw. das Gerät enthält Inhalte verschiedener Typen.")
ContinueLoop
Exit
;Shutdown ($methode) Achtung! Zu testzwecken deaktiviert... Bitte bei "echter" Benutzung wieder aktivieren
EndIf
If Not WinActive ( "Security" ) Then WinActivate ( "Security" )
GUISetState (@SW_MAXIMIZE)
If GUIGetMsg () = $again Then _trystart ()
_MouseTrap ( 0, 0, @desktopwidth, @DesktopHeight - 50)
WEnd
EndFunc
Viel spaß damit
Bitte um Feedback!! Sei es lob oder tadel!!
EDIT:
Der button hies noch "Herunterfahren", war aber auch Try-again... Jetzt verbessert