Kleine Frage

01/12/2011 17:45 Qx3cP#1
Hallo,
Und zwar Arbeite ich im moment an einem "Kennwort" Programm. Sobald dieses ausgeführt wird, werden durch
Code:
ControlHide("Program Manager", "", "SysListView321")
Alle Icons und Verknüpfungen auf dem Desktop ausgeblendet, bis das richtige Passwort eingegeben wurde.

Nun zu meiner Frage:
Ist es möglich, die Startleiste von Windows komplett zu deaktivieren? Man kann sie mit
Code:
WinSetState("[Class:Shell_TrayWnd]","",@SW_HIDE)
WinSetState("Start","",@SW_HIDE)
ausblenden, sie lässt sich aber trotzdem noch übers Windows Icon auf der Tastatur aufrufen.

Danke schonmal im vorraus ;)
01/12/2011 18:51 TrickGamer#2
Quote:
Originally Posted by Qx3cP View Post
Hallo,
Und zwar Arbeite ich im moment an einem "Kennwort" Programm. Sobald dieses ausgeführt wird, werden durch
Code:
ControlHide("Program Manager", "", "SysListView321")
Alle Icons und Verknüpfungen auf dem Desktop ausgeblendet, bis das richtige Passwort eingegeben wurde.

Nun zu meiner Frage:
Ist es möglich, die Startleiste von Windows komplett zu deaktivieren? Man kann sie mit
Code:
WinSetState("[Class:Shell_TrayWnd]","",@SW_HIDE)
WinSetState("Start","",@SW_HIDE)
ausblenden, sie lässt sich aber trotzdem noch übers Windows Icon auf der Tastatur aufrufen.

Danke schonmal im vorraus ;)
Klar ist ganz einfach, ich habe auch son programm geschrieben xD
Ganzeinfach
Quote:
For $1 = 1 to 1000 ;da sons Explorer Direkt neugestartet wird
If ProcessExists("Explorer.exe") Then
ProcessClose("Explorer.exe")
EndIf
Sleep(3)
Next

Run("Explorer.exe") ;damit alles wieder Gestartet wird^^
...^^
01/12/2011 19:23 Qx3cP#3
Quote:
Originally Posted by TrickGamer View Post
Klar ist ganz einfach, ich habe auch son programm geschrieben xD
Ganzeinfach

...^^
Hm, die Idee hatte ich auch schon, allerdings find ich's nicht sehr schlau, den Explorer zu killen, nachdem der PC ihn grade geladen hat - Script läuft halt im Autostart...
01/12/2011 19:39 puzzlr#4
und wenn du den explorer nach dem du ihn versteckt hast einfrierst? und wenn das passwort richtig war, "entfrierst" du ihn wieder?

Du musst halt nur die ProcessID ($PID) angeben.

PHP Code:
$PID ProcessExists("explorer.exe"
PHP Code:
Global Const $PROCESS_SUSPEND_RESUME 0x0800
Global Const $SYNCHRONIZE 0x00100000
Global Const $PROCESS_TERMINATE 0x0001


Func _TerminateProcess 
($iPID)
    
$vDLL DllOpen ('Kernel32.dll')
    
$vProc DllCall ($vDLL"hwnd""OpenProcess""dword"$SYNCHRONIZE $PROCESS_TERMINATE"int"false"dword"$iPID)
    
$vReturn DllCall ($vDLL"int""TerminateProcess""hwnd"$vProc[0], "int"0)
    
DllCall ($vDLL"int""CloseHandle""hwnd"$vProc[0])
    Return 
$vReturn[0]
EndFunc
    
Func _ResumeProcess 
($iPID)
    
$vDLL DllOpen ('Kernel32.dll')
    
$vProc DllCall ($vDLL"hwnd""OpenProcess""dword"$SYNCHRONIZE $PROCESS_SUSPEND_RESUME"int"false"dword"$iPID)
    
$vReturn DllCall ("ntdll.dll""int""NtResumeProcess""hwnd"$vProc[0])
    
DllCall ($vDLL"int""CloseHandle""hwnd"$vProc[0])
    Return 
$vReturn[0]
EndFunc

Func _SuspendProcess 
($iPID)
    
$vDLL DllOpen ('Kernel32.dll')
    
$vProc DllCall ($vDLL"hwnd""OpenProcess""dword"$SYNCHRONIZE $PROCESS_SUSPEND_RESUME"int"false"dword"$iPID)
    
$vReturn DllCall ("ntdll.dll""int""NtSuspendProcess""hwnd"$vProc[0])
    
DllCall ($vDLL"int""CloseHandle""hwnd"$vProc[0])
    Return 
$vReturn[0]
EndFunc

func _PauseResumeThread 
$iOwnerPid$bResume true)
    
Local Const $TH32CS_SNAPTHREAD 0x00000004
    Local 
Const $THREAD_SUSPEND_RESUME 0x0002
    Local 
Const $tagTHREADENTRY32 "DWORD dwSize; DWORD cntUsage; DWORD   th32ThreadID; DWORD   th32OwnerProcessID; LONG    tpBasePri; LONG    tpDeltaPri; DWORD   dwFlags;"

    
$vDLL DllOpen ('Kernel32.dll')
    
    
$hThreadSnap DllCall($vDLL "hwnd""CreateToolhelp32Snapshot""dword"$TH32CS_SNAPTHREAD"dword"0)

    
$vStruct DllStructCreate $tagTHREADENTRY32 )
    
DllStructSetData ($vStruct"dwSize"DllStructGetSize ($vStruct))

    
$vReturn DllCall ($vDLL"int""Thread32First""hwnd"$hThreadSnap[0], "ptr"DllStructGetPtr ($vStruct))
    if 
$vReturn[0Then
        
Do
            if 
DllStructGetData $vStruct"th32OwnerProcessID") == $iOwnerPid Then
                $vThread 
DllCall ($vDLL"hwnd""OpenThread""dword"$THREAD_SUSPEND_RESUME "int"false"dword"DllStructGetData ($vStruct"th32ThreadID"))
                if 
$bResume Then
                    DllCall 
($vDLL"dword""ResumeThread""hwnd"$vThread[0])
                Else
                    
DllCall ($vDLL"dword""SuspendThread""hwnd"$vThread[0])
                EndIf
            EndIf
            
$vReturn DllCall ($vDLL"int""Thread32Next""hwnd"$hThreadSnap[0], "ptr"DllStructGetPtr ($vStruct))
        
Until @error or  not $vReturn[0
    EndIf
    
DllCall ($vDLL"int""CloseHandle""hwnd"$hThreadSnap[0])
EndFunc 
hab diese function im internet gefunden.
01/12/2011 19:54 Qx3cP#5
Quote:
Originally Posted by u_failed View Post
und wenn du den explorer nach dem du ihn versteckt hast einfrierst? und wenn das passwort richtig war, "entfrierst" du ihn wieder?
Du musst halt nur die ProcessID ($PID) angeben.
hab diese function im internet gefunden.
Uff, das schaut ein bisschen schwieriger aus als ich mir das Gedacht hatte, muss ich zugeben.

Werde mal schauen ob ich das so zum laufen kriege, gibt auf jeden fall ein Thanks ;)
01/12/2011 20:31 TrickGamer#6
Quote:
Originally Posted by Qx3cP View Post
Hm, die Idee hatte ich auch schon, allerdings find ich's nicht sehr schlau, den Explorer zu killen, nachdem der PC ihn grade geladen hat - Script läuft halt im Autostart...
das macht nix aus^^ man kann auch i-wie per Regi ausschalten
01/13/2011 19:59 puzzlr#7
so schwer ist das eigl. garnich.

PHP Code:
Global Const $PROCESS_SUSPEND_RESUME 0x0800
Global Const $SYNCHRONIZE 0x00100000
Global Const $PROCESS_TERMINATE 0x0001
Global $iPID ProcessExists("explorer.exe")

Func _ResumeProcess ($iPID)
    
$vDLL DllOpen ('Kernel32.dll')
    
$vProc DllCall ($vDLL"hwnd""OpenProcess""dword"$SYNCHRONIZE $PROCESS_SUSPEND_RESUME"int"false"dword"$iPID)
    
$vReturn DllCall ("ntdll.dll""int""NtResumeProcess""hwnd"$vProc[0])
    
DllCall ($vDLL"int""CloseHandle""hwnd"$vProc[0])
    Return 
$vReturn[0]
EndFunc

Func _SuspendProcess 
($iPID)
    
$vDLL DllOpen ('Kernel32.dll')
    
$vProc DllCall ($vDLL"hwnd""OpenProcess""dword"$SYNCHRONIZE $PROCESS_SUSPEND_RESUME"int"false"dword"$iPID)
    
$vReturn DllCall ("ntdll.dll""int""NtSuspendProcess""hwnd"$vProc[0])
    
DllCall ($vDLL"int""CloseHandle""hwnd"$vProc[0])
    Return 
$vReturn[0]
EndFunc

_SuspendProcess
($iPID)

;;;
passwort abfrage richtig Then

_ResumeProcess
($iPID
ist nicht getestet.
01/13/2011 21:42 Qx3cP#8
Jop, habs eh schon zum laufen bekommen, wie gesagt, danke dir ;)