PDA

View Full Version : سوال: به اجرا دراوردن کلید SPACE در محیط بازی



Veteran
جمعه 14 تیر 1392, 18:00 عصر
عرض ادب و احترام خدمت تمامی دوستان

در یک بازی(کانتر) من نیاز دارم پشت سره هم کلید SPACE رو بزنم.
اگر بخوام با کیبورد بزنم که کاری خسته کننده است.
واسه همین اومدم این تکه کد رو نوشتم

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const VK_SPACE = &H20
Private Const KEYEVENTF_KEYUP = &H2
Private Sub Timer1_Timer()
If GetAsyncKeyState(67) = -32767 Then Timer2.Enabled = Not Timer2.Enabled
End Sub
Private Sub Timer2_Timer()
keybd_event VK_SPACE, 0, 0, 0 ' press Space
keybd_event VK_SPACE, 0, KEYEVENTF_KEYUP, 0 ' release Space
End Sub


هر موقعه کلید C فشار داده شد برنامه شروع به کار میکنه و SPACE میزنه !
اما فقط توی محیط های متنی ! مثلا notepad و یا هرجایی که بشه نوشت !
اما متاسفانه توی بازی تاثیری نداره ! یعنی اتفاقی نمیوفته ! انگار که نه انگار !
توی بازی کار نمیکنه !
حالا به نظرتون چیکار کنم ؟! :متفکر:

Veteran
شنبه 15 تیر 1392, 15:11 عصر
:گریه::عصبانی++:

just4froum
شنبه 15 تیر 1392, 19:44 عصر
با سلام :

کانتر خیلی عجیبه ؟!!:متعجب: منم الان باهاش ور رفتم نه با Sendkey جواب میده نه با API نا به osk؟

جالب اینه که توی منو بازی یا وقتی کلید "`" رو می زنی که کد وارد کنی اونجا هم کار می کنه ولی موقع بازی اصلا انجام نمیده !

دوستان کسی روش دیگری برای شبیه سازی کیبرد نداره ؟

Veteran
شنبه 15 تیر 1392, 22:03 عصر
اره مثلا توی کنسول بازی درست کار میکنه ! اما توی خوده بازی نه !

vbhamed
شنبه 15 تیر 1392, 22:42 عصر
سلام
نمي‌دونم كمكتون ميكنه يا نه
يادمه تو داس كه با كيو بيسيك 7 برنامه مي‌نوشتم چون سرعت كيبرد كم بود، از پورت 60 هگزا دسيمال يا 96 دسيمال براي خوندن و نوشتن كيبرد استفاده مي‌كرديم
با توابع INP و OUT
اين ها پورت روي شبكه يا مجازي نيستن بلكه پورت سخت افزاري هستن مثل پورت پرينتر و ... و اگر با API يا چيزي ديگه بشه بهشون دسترسي پيدا كنيد ممكنه مشكلتون رو حل كنه