Saya atau mungkin Anda juga heran kenapa untuk menon-aktifkan tombol CTRL+ALT+DEL di Win 2K/XP sedikit merepotkan, padahal kalo di keluarga windows 9x kan perintahnya sangat sederhana cukup seperti ini :
123456789101112
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
Private Const SPI_SETSCREENSAVERRUNNING = 97
Dim ret As Long
Private Sub Form_Load()
ret = SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, 1, 0&, 0&) 'menonaktifkan CTRL + ALT + DEL
End Sub
Private Sub Form_Unload(Cancel As Integer)
ret = SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, 0, 0&, 0&) 'mengaktifkan kembali CTRL + ALT + DEL
End Sub
Gimana ? Simple kan? :)
Oke kita langsung bahas saja beberapa cara untuk menonaktifkan CTRL + ALT + DEL di Win 2K/XP
Cara 1 - via registry
Informasi registry windows yang harus kita modifikasi adalah sebagai berikut :
1234
User Key : [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
Name : DisableTaskMgr
Type : REG_DWORD (DWORD Value)
Value : (0 = default, 1 = disable Task Manager)
Berikut adalah kode lengkap untuk menonaktifkan CTRL + ALT + DEL via registry
1234567891011121314151617
Private Const HKEY_CURRENT_USER = &H80000001
Private Const REG_DWORD = 4
Private Sub disableTaskMgr(ByVal value As Boolean)
Dim nBufferKey As Long
Dim nVal As Long
nVal = IIf(value, 1, 0)
RegOpenKey HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\System", nBufferKey
RegSetValueEx nBufferKey, "DisableTaskMgr", 0, REG_DWORD, nVal, Len(nVal)
RegCloseKey nBufferKey
End Sub
Private Sub Form_Load()
Call disableTaskMgr(True)
End Sub
Cara pertama menurut saya kurang kren :D karena merupakan metode yang sudah sering digunakan oleh virus-virus lokal, ditambah kalau usernya login menggunakan user non administrator otomatis akan gagal menulis ke registry windows.
Cara 2 - Fungsi API (FindWindow, PostMessage dan DestroyWindow) + Timer
1234567891011121314151617
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Sub killAppByHWND(ByVal hwnd As Long)
On Error Resume Next
PostMessage hwnd, &H10, 0, 0
DestroyWindow hwnd
End Sub
Private Sub Timer1_Timer()
Dim hwnd As Long
hwnd = FindWindow(vbNullString, "Windows Task Manager")
If hwnd <> 0 Then Call killAppByHWND(hwnd)
End Sub
Cara yang kedua ini program selalu melakukan pengecekan terhadap windows handle/process id dari Windows Task Manager, kalo ketangkep langsung dibunuh wihhhh sadis :cry:.
Cara yang kedua ini juga kurang kren karena masih menyisakan beberapa detik penampakan dari Windows Task Manager sebelum dibunuh.
Cara 3 - Modal terhadap dialog Task Manager (menggunakan eksternal library dsmodal.dll)
Oke apa sih yang dimaksud dengan proses modal ? Misalkan kita punya 2 form (Form1 dan Form2) kemudian di Form1 kita ketikkan kode berikut :
123
Private Sub Command1_Click()
Form2.Show vbModal
End Sub
Apa yang terjadi ? Ternyata Form1 tidak aktif/enggak bisa diapa-apain selama Form2 masih aktif. Makanya dengan cara yang ketiga ini otomatis selama program kita masih aktif dialog Task Manager juga ENGGA BISA DIAPA-APAIN :D.
Contoh kode penggunaan library dsmodal.dll
1234567891011121314151617
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function MakeModal Lib "dsmodal" (ByVal AppHwnd As Long, ByVal hwndDest As Long, Optional ByVal Beep As Long = 0) As Long
Private Sub Form_Unload(Cancel As Integer)
Call MakeModal(0, 0) ' Release modale state
End Sub
Private Sub Timer1_Timer()
Dim taskMgrHwnd As Long
Dim ret As Long
taskMgrHwnd = FindWindow(vbNullString, "Windows Task Manager")
If taskMgrHwnd <> 0 Then
ret = MakeModal(Me.hwnd, taskMgrHwnd, 1)
Timer1.Enabled = False
End If
End Sub
Apa yang terjadi setelah kita menjalankan kode program diatas dan menekan tombol CTRL + ALT + DEL? Kalau mau tau download aja sourcenya disini
Cara 4 - Yang paling keren, ampuh dan disarankan oleh banyak para ahli yaitu menggunakan library ekternal WinLockDll.dll
Contoh penggunaannya :
123456789
Private Declare Function CtrlAltDel_Enable_Disable Lib "WinLockDll.dll" (ByVal bEnableDisable As Boolean) As Long
Private Sub cmdDisabledCtrlAltDel_Click()
Call CtrlAltDel_Enable_Disable(False)
End Sub
Private Sub cmdEnabledCtrlAltDel_Click()
Call CtrlAltDel_Enable_Disable(True)
End Sub
Cara ke 4 ini seampuh kita menonaktifkan CTRL + ALT + DEL di Windows 9x, sourcenya bisa didownload disini
Jangan lupa setelah mendownload file ubah ekstensinya menjadi RAR. Selamat mencoba :)