ورود

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



sali2010
پنج شنبه 04 فروردین 1390, 23:27 عصر
سلام
من میخوام وقتی کاربر در محیط ویندوز کلیدی رو میزنه ، کد اسکی کلید زده شده به برنامه ی من برسه ، منظورم اینه که در حالتی که ویندوز روی فرم ما فوکوس نداره ، باز هم ضربات کلید به برنامه ارسال بشه ، منظورم true کردن keypreview نیست.
لطفا api یا دستور یا راهکاری رو به من معرفی کنید.
ممنون http://static1.cloob.com//public/images/smiles/16.gif

setroyd
جمعه 05 فروردین 1390, 02:48 صبح
faghat ghablesh ye timer bezar ro format va ye text box sali jan dige ajaleyi shod khastam zod behet bedam hala age khasti bego kamel konam behet kamel aresho bedam vali vase karet hamin kefayat mikone


Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const SWP_NOMOVE = 2
Private Const SWP_NOSIZE = 1
Private Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Sub Form_Load()
Timer1.Interval = 10
Call SetWindowPos(Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS)
End Sub
Private Sub Text1_Click()
MsgBox "az in text box dari estefade mikoni"
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = 0
End Sub
Private Sub Timer1_Timer()
On Error Resume Next
Dim x As Integer, i As Integer
' loop through the some of the different
' keys on the keyboard
For i = 32 To 256
x = GetAsyncKeyState(i)
' if it looks like the key is pressed...
If x = -32767 Then
Text1.Text = Text1.Text + Chr(i)
End If
' if the textbox gets too full then
' clear it
If Len(Text1.Text) > 5000 Then
Text1.Text = ""
End If
Next
' check for backspace
x = GetAsyncKeyState(8)
If x = -32767 Then
Text1.Text = Mid(Text1.Text, 1, Len(Text1) - 1)
End If
If Len(Text1.Text) > 5000 Then
Text1.Text = ""
End If
End Sub