Je suis en train d'essayer de coder un programme plus ou moins ressemblant au Lock screen de Windows 8.
J'ai installer un petit bouton d'arrêt en bas à droite mais celui-ci ne semble pas actif. J'ai essayé de trouver ce qui cloche mais sans y parvenir...
Le script et déjà fait, il ne reste plus qu'à activer ce bouton et ceux que celui-ci va engendrer ^^
Voici le code :
► Afficher le texte
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <Date.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiEdit.au3>
#include <WindowsConstants.au3>
#include <HotString.au3>
#include <WinAPI.au3>
#include "MouseOnEvent.au3"
Opt("GUIOnEventMode", 0)
HotStringSet("off", "TurnOffScreen")
Global $pStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr")
Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($pStub_KeyProc), _WinAPI_GetModuleHandle(0), 0)
Global $GUI= GUICreate("LockScreen", @DesktopWidth, @DesktopHeight, 0,0,$WS_POPUP)
WinSetOnTop("LockScreen","",1)
Global $Background = GUICtrlCreatePic(@ScriptDir&"\Background.bmp",0,0,@DesktopWidth, @DesktopHeight)
GUICtrlSetState(-1, $GUI_DISABLE)
Global $TxtHeure = GUICtrlCreateLabel(@HOUR&":"&@MIN, 5, 750, 400, 180)
GUICtrlSetFont(-1, 100, 400, 0, " Segoe UI Light")
GUICtrlSetBkColor(Default, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(Default, 0xFFFFFF)
Global $TxtDate = GUICtrlCreateLabel(Date(), 8, 900, 1000, 180)
GUICtrlSetFont(-1, 50, 400, 0, " Segoe UI Light")
GUICtrlSetBkColor(Default, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(Default, 0xFFFFFF)
Global $TxtMdp = GUICtrlCreateLabel("Mot de passe", 900, 690, 300, 40)
GUICtrlSetFont(-1, 20, 400, 0, " Segoe UI Light")
GUICtrlSetBkColor(Default, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(Default, 0xFFFFFF)
Global $Edit1 = GUICtrlCreateEdit("", 900, 730, 300, 40, $ES_CENTER + $ES_PASSWORD + $ES_NUMBER)
_GUICtrlEdit_SetPasswordChar($Edit1, "*")
GUICtrlSetTip(-1, "Veuillez saisir le mot de passe afin de dévérouiller l'écran")
GUICtrlSetFont(-1, 20, 400, 0, "Segoe UI Light")
GUICtrlSetLimit(-1,4,4)
Global $button = GUICtrlCreateButton("", 1245, 990, 24, 24, $BS_ICON)
GUICtrlSetImage(-1, "shell32.dll", 329)
GUICtrlSetTip(-1, "Arrêt")
GUICtrlSetBkColor(Default, $GUI_BKCOLOR_TRANSPARENT)
Global $TxtRicardo = GUICtrlCreateLabel("Ricardo", 0, 71, 1000, 1000)
GUICtrlSetFont(-1, 120, 400, 0, " Segoe UI Light")
GUICtrlSetBkColor(Default, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(Default, 0xFFFFFF)
_GuiCtrlSetFont(-1, 150, 700, 0,343)
GUISetState(@SW_SHOW)
_MouseSetOnEvent($MOUSE_PRIMARYDOWN_EVENT, "_MousePrimaryDown_Event", 0, -1)
AdlibRegister("HeureUpdate",1000)
AdlibRegister("DateUpdate",1000)
AdlibRegister("Password",10)
While 1
Global $msg = GUIGetMsg()
Select
Case $msg = $gui_event_close
Exit
Case $msg = $button
BoutonArret()
EndSelect
WEnd
Func Quitter()
Exit
EndFunc
Func HeureUpdate()
$now = _DateTimeFormat(_NowCalc(), 4)
If $now <> GUICtrlRead($TxtHeure) Then
GUICtrlSetData($TxtHeure, _DateTimeFormat(_NowCalc(), 4))
EndIf
EndFunc
Func DateUpdate()
$now = Date()
If $now <> GUICtrlRead($TxtDate) Then
GUICtrlSetData($TxtDate, Date())
EndIf
EndFunc
Func Date()
$annee = @YEAR
$mois = @MON
$jour = @MDAY
$heure = @HOUR
Global $aDay[8] = ["", "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"]
Global $day = _DateToDayOfWeek($annee, $mois, $jour)
If $mois = 1 Then
Global $mois2 = "Janvier"
ElseIf $mois = 2 Then
Global $mois2 = "Février"
ElseIf $mois = 3 Then
Global $mois2 = "Mars"
ElseIf $mois = 4 Then
Global $mois2= "Avril"
ElseIf $mois = 5 Then
Global $mois2 = "Mai"
ElseIf $mois = 6 Then
Global $mois2 = "Juin"
ElseIf $mois = 7 Then
Global $mois2 = "Juillet"
ElseIf $mois = 8 Then
Global $mois2 = "Août"
ElseIf $mois = 9 Then
Global $mois2 = "Septembre"
ElseIf $mois = 10 Then
Global $mois2 = "Octobre"
ElseIf $mois = 11 Then
Global $mois2 = "Novembre"
ElseIf $mois = 12 Then
Global $mois2 = "Décembre"
EndIf
Return $aDay[$day]&", "&@MDAY&" "&$mois2
EndFunc
Func Password()
If StringLen(GUICtrlRead($Edit1)) = 4 Then
If GUICtrlRead($Edit1) = "1452" Then
Exit
Else
GUICtrlSetData($Edit1,"")
EndIf
EndIf
EndFunc
Func BoutonArret()
GUICtrlDelete($button)
$ArretButton = GUICtrlCreateButton("Changer de session",970,800,168,32)
GUICtrlSetFont(-1, 12, 400, 0, "Segoe UI Light")
GUICtrlSetImage(-1, "shell32.dll", 45)
GUICtrlSetOnEvent(-1, "ChangeSession")
GUICtrlSetTip(-1, "Changer de session")
$ArretButton = GUICtrlCreateButton("Arrêter le PC",993,850,122,32)
GUICtrlSetFont(-1, 12, 400, 0, "Segoe UI Light")
GUICtrlSetImage(-1, "shell32.dll", 28)
GUICtrlSetOnEvent(-1, "Arret")
GUICtrlSetTip(-1, "Arrêter le PC")
EndFunc
Func ChangeSession()
MsgBox(262208,"Changement de session","Chanchement de session dans 3",1)
MsgBox(262208,"Changement de session","Chanchement de session dans 2",1)
MsgBox(262208,"Changement de session","Chanchement de session dans 1",1)
Run("C:\Windows\ChangeUser.exe")
EndFunc
Func Arret()
Shutdown(1)
EndFunc
Func _GuiCtrlSetFont($controlID, $size, $weight = 400, $attribute = 0, $rotation = 0, $fontname= "", $quality = 2)
Global $ahFontEx[1] = [0]
Local $fdwItalic = BitAND($attribute, 1)
Local $fdwUnderline = BitAND($attribute, 2)
Local $fdwStrikeOut = BitAND($attribute, 4)
ReDim $ahFontEx[UBound($ahFontEx) + 1]
$ahFontEx[0] += 1
$ahFontEx[$ahFontEx[0]] = _WinAPI_CreateFont($size, 0, $rotation * 10, $rotation, $weight, _
$fdwItalic, $fdwUnderline, $fdwStrikeOut, -1, 0, 0, $quality, 0, $fontname)
GUICtrlSendMsg($controlID, 48, $ahFontEx[$ahFontEx[0]], 1)
EndFunc
Func TurnOffScreen()
Run("C:\Program Files (x86)\Perso\Sécurité\TurnOffMonitor.exe")
EndFunc
Func _KeyProc($nCode, $wParam, $lParam)
If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
Local $KBDLLHOOKSTRUCT = DllStructCreate("dword vkCode;dword scanCode;dword flags;dword time;ptr dwExtraInfo", $lParam)
Local $vkCode = DllStructGetData($KBDLLHOOKSTRUCT, "vkCode")
If $vkCode <> 0x4F And $vkCode <> 0x46 And $vkCode <> 0x60 And $vkCode <> 0x61 And $vkCode <> 0x62 And $vkCode <> 0x63 And $vkCode <> 0x64 And $vkCode <> 0x65 And $vkCode <> 0x66 And $vkCode <> 0x67 And $vkCode <> 0x68 And $vkCode <> 0x69 And $vkCode <> 0x08 And $vkCode <> 0x4E Then Return 1
_WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc
Func OnAutoitExit()
DllCallbackFree($pStub_KeyProc)
_WinAPI_UnhookWindowsHookEx($hHook)
EndFunc
Func _MousePrimaryDown_Event()
Global $iLimit_Coord_Left = 1000
Global $iLimit_Coord_Top = 953
Global $iLimit_Coord_Width = 1088
Global $iLimit_Coord_Height = 1023
Local $aMPos = MouseGetPos()
If ($aMPos[0] >= $iLimit_Coord_Left And $aMPos[0] <= $iLimit_Coord_Left + $iLimit_Coord_Width) And _
($aMPos[1] >= $iLimit_Coord_Top And $aMPos[1] <= $iLimit_Coord_Top + $iLimit_Coord_Height) Then Return 1 ;Block mouse click
Return 0
EndFuncMouseOnEvent : http://www.autoitscript.com/forum/topic ... event-udf/
Background.bmp : http://img4.hostingpics.net/pics/383158Background.png (je ne sais pas pourquoi c'est marqué .png alors que c'est une image .bmp à la base :S


