PDA

View Full Version : وضعیت کلید num Lock چگونه مشخص می شود



programmermp
شنبه 13 مرداد 1386, 12:54 عصر
با سلام خدمت دوستان

اگه دیده باشید تو بعضی از نرم افزار ها توی status bar وضعیت خاموش یا روشن بودن

کلید های num lock,scroll lock ,caps lock رو با روشن یا کم رنگ کردن نام این کلیدها

مشخص می کنند

می خواستم بدونم چطوری می شه این کار رو انجام داد؟

یعنی روشن یا خاموش بودن این کلیدها رو فهمید؟

با تشکر

odiseh
شنبه 13 مرداد 1386, 14:03 عصر
سلام

با این دستور برای NumLock وضعیتشو تعیین می کنی::
IF Control.Iskeylocked(KEYS.NUMLOCK) = FALSE THEN
ELSE
END IF

پویا
شنبه 13 مرداد 1386, 14:20 عصر
می تونی KeyPreview رو در فرمت true کنی و از keydown تغییر وضعیت کلید ها رو متوجه بشی
البته نمیدونم وضعیت اولیه رو از کجا می شه فهمید

programmermp
شنبه 13 مرداد 1386, 18:05 عصر
سلام

با این دستور برای NumLock وضعیتشو تعیین می کنی::
IF Control.Iskeylocked(KEYS.NUMLOCK) = FALSE THEN
ELSE
END IF


سلام دوست عزیز

این کد شما برای من فقط روی capslock خوب و کامل جواب داد اگر به جای اون numlock

یا scroll بنویسم فقط هی می گه روشنه در صورتی که خاموش هم می شه یعنی برای

این دو به یک حالتشون فقط عکس العمل نشون میده

در ضمن من این کدها رو که گفتید می زارم توی رویداد keydown از فرمم

کدی هم که استفاده کردم اینه :



if control.iskeylocked(capslock)=true then
msgbox("on")
else
msgbox("off")
endif

مشکل چیه ؟

با تشکر

saeed_rezaei
شنبه 13 مرداد 1386, 23:34 عصر
سلام
علاوه بر مواردی که به وسیله خود وی بی می شه انجام داد و دوستان یه مثال ذکر کردند شما می تونید از توابع API جهت بررسی مورد فوق استفاده کنید.
در ضمیمه برنامه ای هست که وضعیت چراغهای capslock و numlock رو به صورت چها وضعیت:
روشن
روشن و پایین نگه داشته شده
خاموش
خاموش و پایین نگه داشته شده
بررسی می کنه.
فکر میکنم یه نگاهی بندازید خالی از لطف نباشه.

برای دوستانی هم که حوصله دونلود رو ندارن کدش رو می زنم:



Const VK_NUMLOCK = &H90
Const VK_CAPITAL = &H14

PrivateDeclareFunction GetKeyState Lib"user32.dll" (ByVal nKey As Int32) As Int32

PrivateSub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

SelectCase GetKeyState(VK_NUMLOCK)
Case 1
Label1.Text = "NUMLOCK IS ON"
Case 0
Label1.Text = "NUMLOCK IS OFF"
Case -127
Label1.Text = "NUMLOCK IS DOWN AND ON"
Case -128
Label1.Text = "NUMLOCK IS DOWN AND OFF"
EndSelect

SelectCase GetKeyState(VK_CAPITAL)
Case 1
Label2.Text = "CAPSLOCK IS ON"
Case 0
Label2.Text = "CAPSLOCK IS OFF"
Case 65409
Label2.Text = "CAPSLOCK IS DOWN AND ON"
Case 65408
Label2.Text = "CAPSLOCK IS DOWN AND OFF"
EndSelect
EndSub

odiseh
یک شنبه 14 مرداد 1386, 09:10 صبح
سلام دوست عزیز

این کد شما برای من فقط روی capslock خوب و کامل جواب داد اگر به جای اون numlock

یا scroll بنویسم فقط هی می گه روشنه در صورتی که خاموش هم می شه یعنی برای

این دو به یک حالتشون فقط عکس العمل نشون میده

در ضمن من این کدها رو که گفتید می زارم توی رویداد keydown از فرمم

کدی هم که استفاده کردم اینه :



if control.iskeylocked(capslock)=true then
msgbox("on")
else
msgbox("off")
endif

مشکل چیه ؟

با تشکر

سلام.
ببین من عین کدی رو که برات گذاشتم رو توی یه windows application کپی کردم و مشکلی وجود نداره...حالا برای راهنماییت بیا این کارو بکن ::
1- KeyPreview فرمت رو True کن.
2- در event مربوط به KeyUp فرمت این تکه کد رو برای NumLock بنویس(عینا کپیش کن):
If Control.IsKeyLocked(Keys.NumLock) = TrueThen
MsgBox("on")
Else
MsgBox("off")
EndIf
--------------------------------------------
برای CapsLock فقط و فقط به جای NumLock بنویس CapsLock همین!
---------------------------------------------------------------------------
برای ScrollLock هم فقط به جای NumLock بنویس scroll.

فراموش نکن که Keys رو حتما بذاری . در ضمن ببین من توی KeyUp گذاشتم تا سیستم فرصت شناسایی کلید رو وقت بالا اومدن کلید داشته باشه.