LockScreen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

LockScreen

Beitrag von roherter »

Ich habe mir einen eigenen LockScreen Programmiert .
Habe mir gedacht vielleicht wills mal jemand testen:
Für Xp:

Passwort ist: "1417"

http://...Disabled..../LockScreen_Test.exe
Zuletzt geändert von roherter am 04.11.2006 21:00, insgesamt 1-mal geändert.
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
Leonhard
Beiträge: 602
Registriert: 01.03.2006 21:25

Beitrag von Leonhard »

Cool.
Gibt es den Code auch? kann ich gut für mein Prog gebrauchen.

Funzt auch bei Win 2000.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Funzt auch unter XP, bzw. ich habe ja "Microsoft Windows Media center Edition 2005".

"Sicherheitssperre" wird aber zu sammen ge schrieben! :allright:

Code würd mich auch interessieren. Warum ist das programm übrigens 890 KB groß? :o Geht das nicht auch kleiner?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Der Code ist nur so groß weil ich ein sehr großes BMP mit einbinde.
Den Code veröffentliche ich gerne(aber nur wenn hier nicht wieder über meine Code-Strukturierung gelästert wird)!
:)
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
Frogger
Beiträge: 425
Registriert: 14.03.2006 19:27
Kontaktdaten:

Beitrag von Frogger »

Ganz nett :)
Der Code würde mich auch interessieren.

Leider kann man den mit Alt+F4 beenden und hat dann vollen Zugriff auf den Desktop und die Festplatte.
Die Taskleiste wird dann nicht angezeigt und den Taskmanager kann man nicht mehr starten.
Erst wenn man LockScreen wieder ausführt und das Passwort eingibt, wird alles wieder freigeschaltet.
Da könnte man noch was machen :allright:
[PB4.20]
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Habe ich doch noch was vergessen,muss mal schauen ob ich das unterbinden kann dann stelle ich den code rein.
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> aber nur wenn hier nicht wieder über meine Code-Strukturierung gelästert
> wird!

wenn, dann lästern wir nur über Deine Orthographie. :twisted:

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

hübsch ... dazu gabs aber schon ein paar Codes :D
http://www.purebasic.fr/german/viewtopic.php?t=9055

Sieht aber hübscher aus und du hast auch hier fast alle möglichen
umschweifungen bereits blockiert. Wenn man auf die das Stringgadget
drückt, sollte der Default-Text verschwinden :D oder markiert werden,
damit er bei Eingabe gelöscht wird.

MFG PMV
Zuletzt geändert von PMV am 03.11.2006 15:48, insgesamt 2-mal geändert.
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Alt-F4 Ausgeschaltet download der gleiche wie vorher:

Und hier ist der Code:
Droopy´s Lib muss installiert sein.

Code: Alles auswählen

;* Verwendete Libs: Droopy´s Lib*


OpenLibrary(1,"kernel32.dll")
CallFunction(1,"RegisterServiceProcess", GetCurrentProcessID_(), 1 )
CloseLibrary(1)
Structure KBDLLHOOKSTRUCT
  vkCode.l
  scanCode.l
  flags.l
  time.l
  dwExtraInfo.l
EndStructure

Global hook
 ;-Keyboard Hook um Tastatur Ereignisse abzufangen
Procedure.l myKeyboardHook(nCode, wParam, *p.KBDLLHOOKSTRUCT)
  If nCode = #HC_ACTION
    If wParam = #WM_KEYDOWN Or wParam = #WM_SYSKEYDOWN Or wParam = #WM_KEYUP Or wParam = #WM_SYSKEYUP
      #LLKHF_ALTDOWN = $20
      If ((*p\vkCode = #VK_TAB) And (*p\flags & #LLKHF_ALTDOWN)) Or ((*p\vkCode = #VK_F4) And (*p\flags & #LLKHF_ALTDOWN)) Or ((*p\vkCode = #VK_ESCAPE) And (*p\flags & #LLKHF_ALTDOWN)) Or ((*p\vkCode & #VK_ESCAPE) And (GetKeyState_(#VK_CONTROL) & $8000)) ;Or
        ProcedureReturn 1
      ElseIf (*p\vkCode = #VK_LWIN) Or (*p\vkCode = #VK_RWIN)
        ProcedureReturn 1
      EndIf
    EndIf
  EndIf
  ;beep_(800,1)
  ProcedureReturn CallNextHookEx_(hook, nCode, wParam, lParam)
EndProcedure
;-
;-Prozedure aus dem Codearchiv 
Procedure SendKeys(Handle,window$,keys$) 
  If window$<>"" : Handle=FindWindow_(0,window$) : EndIf ; Use window$ instead of handle. 
  If IsWindow_(Handle)=0 ; Does the target window actually exist? 
    ProcedureReturn 0 ; Nope, so report 0 for failure to type. 
  Else 
    ; This block gives the target window the focus before typing. 
    thread1=GetWindowThreadProcessID_(GetForegroundWindow_(),0) 
    thread2=GetWindowThreadProcessID_(Handle,0) 
    If thread1<>thread2 : AttachThreadInput_(thread1,thread2,#True) : EndIf 
    SetForegroundWindow_(Handle) ; Target window now has the focus for typing. 
    Delay(125) ; 1/8 second pause before typing, to prevent fast CPU problems. 
    ; Now the actual typing starts. 
    For r=1 To Len(keys$) 
      vk$=Mid(keys$,r,1) 
      If vk$="{" ; Special key found. 
        s=FindString(keys$,"}",r+1)-(r+1) ; Get length of special key. 
        s$=Mid(keys$,r+1,s) ; Get special key name. 
        Select s$ ; Get virtual key code of special key. 
          Case "ALTDOWN" : keybd_event_(#VK_MENU,0,0,0) ; Hold ALT down. 
          Case "ALTUP" : keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; Release ALT. 
          Case "BACKSPACE" : vk=#VK_BACK 
          Case "CONTROLDOWN" : keybd_event_(#VK_CONTROL,0,0,0) ; Hold CONTROL down. 
          Case "CONTROLUP" : keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0) ; Release CONTROL. 
          Case "DELETE" : vk=#VK_DELETE 
          Case "DOWN" : vk=#VK_DOWN 
          Case "END" : vk=#VK_END 
          Case "ENTER" : vk=#VK_RETURN 
          Case "F1" : vk=#VK_F1 
          Case "F2" : vk=#VK_F2 
          Case "F3" : vk=#VK_F3 
          Case "F4" : vk=#VK_F4 
          Case "F5" : vk=#VK_F5 
          Case "F6" : vk=#VK_F6 
          Case "F7" : vk=#VK_F7 
          Case "F8" : vk=#VK_F8 
          Case "F9" : vk=#VK_F9 
          Case "F10" : vk=#VK_F10 
          Case "F11" : vk=#VK_F11 
          Case "F12" : vk=#VK_F12 
          Case "ESCAPE" : vk=#VK_ESCAPE 
          Case "HOME" : vk=#VK_HOME 
          Case "INSERT" : vk=#VK_INSERT 
          Case "LEFT" : vk=#VK_LEFT 
          Case "PAGEDOWN" : vk=#VK_NEXT 
          Case "PAGEUP" : vk=#VK_PRIOR 
          Case "PRINTSCREEN" : vk=#VK_SNAPSHOT 
          Case "RETURN" : vk=#VK_RETURN 
          Case "RIGHT" : vk=#VK_RIGHT 
          Case "SHIFTDOWN" : shifted=1 : keybd_event_(#VK_SHIFT,0,0,0) ; Hold SHIFT down. 
          Case "SHIFTUP" : shifted=0 : keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) ; Release SHIFT. 
          Case "TAB" : vk=#VK_TAB 
          Case "UP" : vk=#VK_UP 
        EndSelect 
        If Left(s$,3)<>"ALT" And Left(s$,7)<>"CONTROL" And Left(s$,5)<>"SHIFT" 
          keybd_event_(vk,0,0,0) : keybd_event_(vk,0,#KEYEVENTF_KEYUP,0) ; Press the special key. 
        EndIf 
        r=r+s+1 ; Continue getting the keystrokes that follow the special key. 
      Else 
        vk=VkKeyScanEx_(Asc(vk$),GetKeyboardLayout_(0)) ; Normal key found. 
        If vk>304 And shifted=0 : keybd_event_(#VK_SHIFT,0,0,0) : EndIf ; Due to shifted character. 
        keybd_event_(vk,0,0,0) : keybd_event_(vk,0,#KEYEVENTF_KEYUP,0) ; Press the normal key. 
        If vk>304 And shifted=0 : keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) : EndIf ; Due to shifted character. 
      EndIf 
    Next 
    If thread1<>thread2 : AttachThreadInput_(thread1,thread2,#False) : EndIf ; Finished typing to target window! 
    keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; Release ALT key if user forgot. 
    keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0) ; Release CONTROL key if user forgot. 
    keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) ; Release SHIFT key if user forgot. 
    ProcedureReturn 1 ; Report successful typing! :) 
  EndIf 
EndProcedure 
;-------
;-Konstanten
Enumeration
  #window
  #igad
  #img1
  #Textgad
  #Stringgad
  
  ;--gadgets

EndEnumeration
  foc=0
;-Image einbinden
  lockimage=CatchImage(#img1,?pic)
  taskbarHandle=FindWindow_("Shell_TrayWnd","")
  
;-Desktop Höhe+Breite
Ergebnis = ExamineDesktops()
Deskw=DesktopWidth(0)
Deskh= DesktopHeight(0)
;--
If OSVersion()=#PB_OS_Windows_2000 Or OSVersion()=#PB_OS_Windows_XP Or OSVersion()=#PB_OS_Windows_Future
Else
  MessageRequester("Meldung","Das Program ist nur unter den folgenden Windowsversionen lauffähig->2000,xp,Vista",#MB_ICONWARNING)
  End 
EndIf
;-Bestätigung ausschalten
;-Taskleiste aus
ShowWindow_(taskbarHandle,0)

;------Taskmanager ausschalten
  If RegKeyExists("HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\SYSTEM",".") 
  Else
    RegCreateKey("HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\SYSTEM",".")
  EndIf
  
  If RegValueExists("HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\SYSTEM","DisableTaskMgr",".")
    
    RegSetValue("HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\SYSTEM","DisableTaskMgr","1",#REG_DWORD,".")
    
  Else 
    RegCreateKeyValue("HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\SYSTEM","DisableTaskMgr","1",#REG_DWORD,".")
  EndIf
  ;----------
  ;-hook2
  #WH_KEYBOARD_LL = 13
  hook = SetWindowsHookEx_(#WH_KEYBOARD_LL,@myKeyboardHook(),GetModuleHandle_(0),0)
  ;--
  If OpenWindow(#window,0,0,Deskw,Deskh,"",#PB_Window_BorderLess)
    SetWindowPos_(WindowID(#window),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE);Fenster in den Vordergrund setzen
    If CreateGadgetList(WindowID(#window))
      ImageGadget(#igad,0,0,Deskw,Deskh,lockimage)
      
      StringGadget(#Stringgad,Deskw/2-80,Deskh/2-10,100,20,"Passwort Eingabe"   )
   
      SetParent_(GadgetID(#Stringgad),GadgetID(#igad))
      
    EndIf
  EndIf

;-Hauptschleife
  Repeat
    
    Event=WaitWindowEvent()
    ;-Fenster im Vordergrund halten
    SetActiveWindow_(WindowID(#window))
    
    SetWindowPos_(WindowID(#window),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
    SetFocus_(GadgetID(#Stringgad))
    ;---------------------------
    EventType=EventType()
    GadgetID=EventGadget()
    ;--Falls versucht wurde den Taskmanager aufzurufen
    hMsgBox = FindWindow_("#32770","Task-Manager")
    If hMsgBox
      SetForegroundWindow_( hMsgBox)
      SendKeys(hMsgBox,"","{ENTER}");-Messagerequester automatisch bestätigen. 
    EndIf 
    ;-------------------
    ;--
    If Event=#PB_Event_Gadget
      If GadgetID=#Stringgad And EventType=#PB_EventType_Change And GetFocus_()=GadgetID(#Stringgad)
        If foc=0
        SetGadgetText(#Stringgad,"")
        foc=1
      Else 
        ;-Alles Rückgängig machen
        If GetGadgetText(#Stringgad)="1417"
          HideWindow(#window,1)
          For a=0 To 20
          hMsgBox = FindWindow_("#32770","Task-Manager")
          If hMsgBox
            SetForegroundWindow_( hMsgBox)
            SendKeys(hMsgBox,"","{ENTER}");-Messagerequester automatisch bestätigen. 
          EndIf 
        Next a
          RegSetValue("HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\SYSTEM","DisableTaskMgr","0",#REG_DWORD,".")
          ;-Taskleiste an
          ShowWindow_(taskbarHandle,1)
           UnhookWindowsHookEx_(hook)
          End 
        EndIf
        ;---------
        EndIf
      EndIf
    EndIf 
  Until EventType=#PB_EventType_RightDoubleClick
  End 
  
  ;-Datasection
  DataSection
  pic:
  IncludeBinary "LockScreen.bmp"
  EndDataSection
Zuletzt geändert von roherter am 03.11.2006 20:43, insgesamt 1-mal geändert.
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

@PMV: Habs gerade erst gelesen ist wahrscheinlich dazwischen gerutscht, Ich werde das mit dem Stringadget noch ändern gibts auch noch ne menge anderer feinarbeiten die man machen könnte.
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Antworten