PDA

نسخه کامل مشاهده نسخه کامل : فهمیدن فشرده شدن چند کلید



ahmadb
10-01-2008, 16:44
سلام دوستان
یه سؤال داشتم : چجوری میشه مثل بازیها وقتی دو کلید مثلا بالا و چپ فشرده شده اند ، هر دو را فهمید ؟
ممنون

majj
12-01-2008, 08:25
سلام دوستان
یه سؤال داشتم : چجوری میشه مثل بازیها وقتی دو کلید مثلا بالا و چپ فشرده شده اند ، هر دو را فهمید ؟
ممنون

با sendkeys این کار عملیه

sajadmg
13-01-2008, 04:47
سلام
majj عزیز منظور دوستمون را اشتباه متوجه شدی تابعی که شما نوشتی مال ارسال کلید توسط برنامه هست ولی دوستمون میخواد وقتی کلید ترکیبی فشرده شد تشخیص بده
فکر کنم با تابع زیر بشه این کار را کرد

Private Declare Sub keybd_event Lib "user32" Alias "keybd_event" (ByVal bVkAs Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo AsLong)

301
13-01-2008, 13:44
پروپرتی keypreview فورم رو فعال کن بعد


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ahmadb
15-01-2008, 18:27
سلام
از همه شما دوستان به خاطر راهنماییتون ممنون
راستش خودم جوابش رو پیدا کردم : استفاده از API
API مربوط به این کار GetKeyState است :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

خوبی این تابع اینه که هم میشه کلیدهای موس رو چک کرد هم کیبرد و ضمنا میشه فهمید چراغ کلیدهای Caps Lock ، Num Lock و Scroll Lock روشن هست یا نه .
روش استفاده :
مقدار nVirtKey رو می تونید با ثابتهای وی بی مثلا VbKeyUp یا VbKeyDown یا... مقداردهی کنید و یا با استفاده از ثوابت مخصوص تابع که در ادامه اونا رو می ذارم . مقدار خروجی تابع اگر XH8000 بود یعنی کلید مشخص شده پایین است و اگر مقدار آن XH1 بود یعنی چراغ مشخص شده خاموش است .و اگر صفر باشد تابع با خطا مواجه شده .

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ثوابت مخصوص این تابع برای کلیدهای مختلف :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

باز هم از همه دوستان ممنون

منبع : کتاب مرجع توابع API 32 Bit تالیف مهندس حسین صادقی راد انتشارات نص

ahmadb
15-01-2008, 18:35
البته روش جناب 301 هم درسته ولی به درد کار من نمی خورد چون سرعت عمل رویدادهای خود فرم خیلی پایینه و به درد مثلا یک بازی نمی خورد :10: