PDA

View Full Version : sendkey



meysam_meysam74
یک شنبه 11 فروردین 1387, 01:54 صبح
سلام


من مخوام یه کلیدی رو از صفحه کلید به صورت مجازی بفرستم ولی جوری که همه برنامه ها فکر کنن که این کلید از صفحه کلید زده شده با send key
نمیشه این کارو انجام داد

Mr'Jamshidy
یک شنبه 11 فروردین 1387, 02:37 صبح
بنظرم اشتباه میکنی
کار این کد دقیقا شبیه صفحه کلیده فقط باید فکوس روی برنامه مورد نظر باشه

ƒxmahdi
یک شنبه 11 فروردین 1387, 08:47 صبح
اگه شما با دستور send key مثلا کلید Enter را ارسال کنید فقط در صورتی که برنامه شما اجراء باشه این کار در هر محیطی انجام می شه کد زیر را در یک تایمر با nterval =100 قرار بده و برنامه را mnimize کن بعد مثلا nodepad را باز کن ببین چی می شه ؟

Private Sub Timer1_Timer()
SendKeys "{enter}"
End Sub

meysam_meysam74
یک شنبه 11 فروردین 1387, 21:27 عصر
خوب دوستای عزیز :
کاری که من میخوام بکنم نوشتن یه برنامه هست که از دسته جوی استیک کنترول بگیره و به کیبرد تبدیل کنه برایه یه سری از بازی ها که امکان بازی کردن با دسته یو اسپی را ندارن مثلا بازی deviil may cray 3
خوب با دستور send key نمیشه این کارو کرد ولی یه برنامه مشابه این کارو کرده ولی با دسته یو اس پی نیست و فقط مخصوص یه دسته هایه خاص هست ولی من می تونم برایه دسته یو اس پی این برنامه رو بنویسم اگه مشکلم با این send key هل بشه

Mr'Jamshidy
یک شنبه 11 فروردین 1387, 23:06 عصر
پس شما میتونی از این API استفاده کنی
keybd_event

کارش یکم سخته اما روی تمام کلید های کیبورد کنترل داره 100% هم جواب میده

این هم مثال



Const VK_H = 72
Const VK_E = 69
Const VK_L = 76
Const VK_O = 79
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Sub Form_KeyPress(KeyAscii As Integer)
'Print the key on the form
Me.Print Chr$(KeyAscii);
End Sub
Private Sub Form_Paint()

'Clear the form
Me.Cls
keybd_event VK_H, 0, 0, 0 ' press H
keybd_event VK_H, 0, KEYEVENTF_KEYUP, 0 ' release H
keybd_event VK_E, 0, 0, 0 ' press E
keybd_event VK_E, 0, KEYEVENTF_KEYUP, 0 ' release E
keybd_event VK_L, 0, 0, 0 ' press L
keybd_event VK_L, 0, KEYEVENTF_KEYUP, 0 ' release L
keybd_event VK_L, 0, 0, 0 ' press L
keybd_event VK_L, 0, KEYEVENTF_KEYUP, 0 ' release L
keybd_event VK_O, 0, 0, 0 ' press O
keybd_event VK_O, 0, KEYEVENTF_KEYUP, 0 ' release O
End Sub


بنظرم دیگه جایی برای پرسیدن نمونده

meysam_meysam74
دوشنبه 12 فروردین 1387, 03:09 صبح
ممنون دوست عزیز .