PDA

View Full Version : سوال: نحوه از کار انداختن دکمه راست کلید روی صفحه کیبورد



Hassan2500
پنج شنبه 04 خرداد 1391, 21:21 عصر
سلام

من این کد رو نوشتم که دکمه راست کلیک روی کیبورد از کار بیفته ولی باز عمل میکنه

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 93 Then KeyAscii = 0
End Sub

just4froum
پنج شنبه 04 خرداد 1391, 22:09 عصر
خوب طبیعی :

1- اصلا راست کلیک روی کیبرد keyascii نداره اون Keycode
2- keydown هم بعد از تایپ یا انجام کار کلید اتفاق می افته.

شاید بشه یه همچین کلی نوشت ولی از کار نمیندازه می بندتش.

Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 93 Then Timer1.Enabled = True
End Sub


Private Sub Timer1_Timer()
Timer1.Enabled = False
keybd_event vbKeyEscape, 0, 0, 0
keybd_event vbKeyEscape, 0, KEYEVENTF_KEYUP, 0
End Sub


راستی interval تایمرو بگذارید 100

Hassan2500
پنج شنبه 04 خرداد 1391, 22:18 عصر
از کار نیفتاد منظورم کلید وسط کنترل و استارت سمت راست کیبورد است من میخوام برای کلیه تکستهای فرم عمل نکنه

امین مستانی
جمعه 05 خرداد 1391, 11:54 صبح
سلام

با تغییر کد جناب just4froum اینجوری میشه

Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2

Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
If GetAsyncKeyState(93) Then
Timer1.Enabled = True
End If
End Sub

Private Sub Timer1_Timer()
Timer1.Enabled = False
keybd_event vbKeyEscape, 0, 0, 0
keybd_event vbKeyEscape, 0, KEYEVENTF_KEYUP, 0
End Sub