Source Code

Mã nguồn VB6 vô hiệu hoá phím

Làm sao để vô hiệu hóa các phím Start, Ctrl, Alt... bằng VB6.0
1> Có cách nào cho phép 1 chương trình vô hiệu hóa một số phím chức năng trên bàn phím không (Start, Ctrl,Alt...) hoặc là chuột.

2> Nếu muốn cho chương trình khởi động ngay sau khi windows khởi động và cho nó ở thanh bar bên dưới để nó luôn luôn hoạt động thì phải làm cách nào?

Có hàm nào cho phép chương trình tự Shutdown hay khởi động lại máy không

(Câu hỏi của bạn có nick phongnhattran, tại ddth.com)

 

ĐÂY LÀ CÂU TRẢ LỜI HAY VÀ CHUẨN NHẤT TRÊN FORUM CỦA BẠN CÓ NICK: TheHulk TRÊN FORUM DDTH.COM

 

- Còn muốn vô hiệu hóa thì dùng hàm RegisterHotKey để đăng kí phím nóng nhưng không xử lý những phím nóng này sau đây là ví dụ để khóa toàn bộ bàn phím,không phải phím tắt:

Private Const MOD_ALT = &H1
Private Const MOD_CONTROL = &H2
Private Const MOD_SHIFT = &H4
Private Const PM_REMOVE = &H1
Private Const WM_HOTKEY = &H312
Private Type POINTAPI
x As Long
y As Long
End Type
Private Type Msg
hWnd As Long
Message As Long
wParam As Long
lParam As Long
time As Long
pt As POINTAPI
End Type
Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Declare Function UnregisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long) As Long
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As Msg, ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
Private Declare Function WaitMessage Lib "user32" () As Long
Private bCancel As Boolean
Dim i As Integer
Private Sub ProcessMessages()
Dim Message As Msg
'loop until bCancel is set to True
Do While Not bCancel
'wait for a message
WaitMessage
'check if it's a HOTKEY-message
If PeekMessage(Message, Me.hWnd, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
'this is where you want your hotkey to do what you want
'this is where you want your hotkey to do what you want
End If
'let the operating system process other events
DoEvents
Loop
End Sub
Private Sub Form_Load()
Dim ret As Long
bCancel = False
'register all the key
For i = 0 To 256
RegisterHotKey Me.hWnd, (i * 10 + 1) * 2 + 2, 0, i ' every hotkey need a unique id
Next i
'process the Hotkey messages
ProcessMessages
End Sub

 

- Đây là những đoạn code để nhốt chuột trong form (tuy nhiên nếu Task Manager thì đoạn code này sẽ bị vô hiệu hóa, muốn không bị vô hiệu hóa thì bạn cần lặp đi lặp lại đoạn code này trong timer) , ngoài ra bạn cần 2 Commandbutton tong form:

Private Type RECT
left As Long
top As Long
right As Long
bottom As Long
End Type
Private Type POINT
x As Long
y As Long
End Type
Private Declare Sub ClipCursor Lib "user32" (lpRect As Any)
Private Declare Sub GetClientRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT)
Private Declare Sub ClientToScreen Lib "user32" (ByVal hWnd As Long, lpPoint As POINT)
Private Declare Sub OffsetRect Lib "user32" (lpRect As RECT, ByVal x As Long, ByVal y As Long)
Private Sub Form_Load()
Command1.Caption = "Limit Cursor Movement"
Command2.Caption = "Release Limit"
End Sub
Private Sub Command1_Click()
'Limits the Cursor movement to within the form.
Dim client As RECT
Dim upperleft As POINT
'Get information about our wndow
GetClientRect Me.hWnd, client
upperleft.x = client.left
upperleft.y = client.top
'Convert window coördinates to screen coördinates
ClientToScreen Me.hWnd, upperleft
'move our rectangle
OffsetRect client, upperleft.x, upperleft.y
'limit the cursor movement
ClipCursor client
End Sub
Private Sub Command2_Click()
'Releases the cursor limits
ClipCursor ByVal 0&
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Releases the cursor limits
ClipCursor ByVal 0&
End Sub

 

- Muốn Shutdown hay restart thì bạn hãy sử dụng hàm ExitWindow***

muốn chương trình khởi động cùng Windows thì bạn tạo 1 value trong HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Run với phần Data là đường dẫn tới file thực thi của chương trình của bạn (bạn có thể dễ dàng tìm được những module giúp tạo key , value trong registry bằng cách vào những trang như allapi.net hay planetsourcecode.com).Thanh bar mà bạn nói có phải là Tray Bar không ? Nếu là vậy thì bạn có thể tải một ví dụ về cách tạo icon dưới thanh tray bar ở ttp://kpdteam.hypermart.net/download/tray.zip

 

Link download ứng dụng: https://drive.google.com/file/d/1E7SWhjh0sTHMDM0Gowk4mB4q06af0uIf

Theo TheHulk TRÊN FORUM DDTH.COM