Giờ xin viết một bài giống như thế, nhưng là dạy code một chương trình thực sự,
trong đúng 15 phút, chứ ko hơn.
Mục tiêu
Chương trình sẽ rất đơn giản: Có 3 cái check box, cho phép tick và apply on-the-
fly 3 tính năng sau:
- KHóa/mở khóa registry editor
- Khóa/mở khóa command prompt (cmd)
- Khóa/mở khóa task manager
Xét một cách toàn diện, cả 3 tính năng này đều rất hữu ích, đặc biệt khi các bác
ngồi máy công cộng. Nguyên tắc cũng rất rất đơn giản, chỉ cần sửa vài giá trị trong
registry là xong.
Đồ dùng bếp núc
Để bắt đầu code 1 chương trình, người ta có thể dùng 1 ngôn ngữ lập trình phổ
biến nào đó, ví dụ VB. Nhưng chẳng may các bác lại ko có, mà lại phải chạy ra
mua đĩa, mất toi 15 phút, nên tớ xin giới thiệu ngôn ngữ này: AutoIt. Nghe tên có
quen ko ạ?
Một số người sẽ nhớ ra: Sâu XRobot lừng danh một thời đã được viết bằng ngôn
ngữ này. Có tiền án tiền sự ra phết
Giờ các bác vào đây down về bản mới nhất của AutoIt, version 3.
/>setup.exe
Sau khi down về, các bác cài đặt vào máy mình. Mất 3 phút
Bắt đầu!
1. Các bác mở Notepad để code 1 file mang tên cái_gì_đó.au3. Ví dụ tên soft của
các bác là ABC thì tên file nên đặt là ABC.au3. File đó đặt trong thư mục của
AutoIt là hay nhất.
2. Để tạo giao diện cho ABC, các bác paste đoạn code sau:
Code:
#include <GUIConstants.au3>
$gui = GUICreate("Quick Lock", 176, 152, -1, -1, $WS_CAPTION +
$WS_POPUP + $WS_SYSMENU)
$group = GUICtrlCreateGroup("Settings", 8, 8, 161, 105)
$reg = GUICtrlCreateCheckbox("Disable Registry Editor", 16, 32, 137, 17)
$task = GUICtrlCreateCheckbox("Disable Task Manager", 16, 56, 129, 17)
$cmd = GUICtrlCreateCheckbox("Disable Command Prompt", 16, 80, 145, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$go = GUICtrlCreateButton("Apply", 8, 120, 123, 25)
$what = GUICtrlCreateButton("?", 146, 120, 25, 25)
GUISetState(@SW_SHOW)
Giao diện tạo ra sẽ trông như hình sau:
Cực kỳ dễ hiểu và đơn giản phải ko ạ?
3. Các bác tạo một vòng lặp để xử lý các sự kiện:
Code:
While 1
$msg = GuiGetMsg()
Select
Case ($msg = $reg) or ($msg = $task) or ($msg = $cmd)
GuiCtrlSetState($go, $GUI_ENABLE)
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $go
GoClicked()
Case $msg = $what
Intro()
EndSelect
WEnd
Exit
Đoạn code trên nghĩa là nếu bấm vào nút Close thì sẽ exit, bấm vào ? thì sẽ hiện
cửa sổ about, bấm vào 3 check box thì sẽ làm nút Apply hoạt động. Bấm vào
Apply sẽ chạy GoClick()
4. Đoạn code sau xử lý hàm GoClick()
Code:
Func GOClicked()
$state = GuiCtrlRead($reg)
If $state = $GUI_CHECKED Then
RegWrite("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\
CurrentVersion\Policies\System", "DisableRegistryTools", "REG_DWORD", 1)
Else
RegWrite("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Current
Version\Policies\System", "DisableRegistryTools", "REG_DWORD", 0)
EndIf
$state = GuiCtrlRead($task)
If $state = $GUI_CHECKED Then
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersi
on\Policies\System", "DisableTaskMgr", "REG_DWORD", 1)
Else
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersi
on\Policies\System", "DisableTaskMgr", "REG_DWORD", 0)
EndIf
$state = GuiCtrlRead($cmd)
If $state = $GUI_CHECKED Then
RegWrite("HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Syst
em", "DisableCMD", "REG_DWORD", 2)
Else
RegWrite("HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Syst
em", "DisableCMD", "REG_DWORD", 0)
EndIf
GuiCtrlSetState($go, $GUI_DISABLE)
EndFunc
Soft sẽ đọc trạng thái hiện thời của các check box, đồng thời chỉnh sửa giá trị
tương ứng trong registry. Sau khi sửa xong, nút Apply sẽ MỜ đi cho tới khi 1
check box được thay đổi trạng thái.
5. Thêm phần about vào bằng đoạn code:
Code:
Func Intro()