PDA

View Full Version : روشن کردن NumLock



Morteza Manafpour
دوشنبه 21 دی 1383, 13:57 عصر
با سلام خدمت همه دوستان
من به یک کد یا سورسی برای روشن کردن NumLock نیاز داشتم اگه برای CapsLock و ScrollLock هم داشتین لطف می‌کنین.
از همه دوستان تشکر می‌کنم ::نوشتن::

Behrouz_Rad
دوشنبه 21 دی 1383, 15:36 عصر
سلام.
برای روشن یا خاموش شدن کلیدهای NumLock، CapsLock و ScrollLock از تابع SetKeyboardState استفاده می شود.
در قسمت General:


Const VK_CAPITAL = &H14
Const VK_NUMLOCK = &H90
Const VK_SCROLL = &H91

Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type

Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Dim kbArray As KeyboardBytes, kbOld As KeyboardBytes

ساختار KeyboardBytes‌ به یک آرایه 256 بایتی اشاره می کند که برای ذخیره وضعیت جاری کلیدها به کار می رود.

ایجاد یک تابع برای روشن کردن هر کدام از 3 کلید فوق:


Private Sub TurnOn(vkKey As Long)
GetKeyboardState kbArray
kbArray.kbByte(vkKey) = 1
SetKeyboardState kbArray
End Sub

ایجاد یک تابع برای خاموش کردن هر کدام از 3 کلید فوق:


Private Sub TurnOff(vkKey As Long)
GetKeyboardState kbArray
kbArray.kbByte(vkKey) = 0
SetKeyboardState kbArray
End Sub

در روال Form_Load (ذخیره وضعیت جاری کلیدها):


Private Sub Form_Load()
GetKeyboardState kbOld
End Sub

در روال Form_Unload‌ (باز گرداندن وضعیت ابتدایی کلیدها):


Private Sub Form_Unload(Cancel As Integer)
SetKeyboardState kbOld
End Sub

نحوه ی فراخوانی برای خاموش کردن:


TurnOff VK_CAPITAL
TurnOff VK_NUMLOCK
TurnOff VK_SCROLL

نحوه ی فراخوانی برای روشن کردن:


TurnOn VK_CAPITAL
TurnOn VK_NUMLOCK
TurnOn VK_SCROLL

موفق باشید.
:wise1:

mr_esmaily
دوشنبه 21 دی 1383, 16:01 عصر
سلام
البته فکر نکنم تو Xp جواب بده.

Hamedm
سه شنبه 22 دی 1383, 15:05 عصر
mr_esmaily درست میگی. این تابع توی XP جواب نمیده.

Morteza Manafpour
پنج شنبه 24 دی 1383, 00:41 صبح
از دوستان کسی تابع مربوط به XP رو می‌دونه ::نوشتن::