ورود

View Full Version : keyboard block - wait timeout - inkey



hamed_m
دوشنبه 22 خرداد 1385, 09:16 صبح
جستجو کردم اما چیزی پیدا نکردم.
مشکل موقعی بوجود میاد که از 3 wait '' timeout استفاده میشه. فاکس با کلیک یوزر یا فشردن کلیدهای کی برد زمان تایم آوت رو ندیده میگیره و به دستور بعدی میره.
من از تابع بلاک کردن ورودی صفحه کلید windows استفاده کردم برای حل این مشکل ولی صورت زیبایی نداره و کنترل کی برد و ماوس توسط یوزر رو متوقف میکنه.
سئوالم اینه که راهی هست (بدون استفاده از توابع ویندوز و بلاک کردن کی برد) که برای چند ثانیه اجرای کد رو متوقف کرد؟ استفاده از inkey هم متاسفانه همین مشکل رو داره.
ممنون

javad_hosseiny
دوشنبه 22 خرداد 1385, 11:57 صبح
با استفاده از api میشه اینکار رو کرد ( تابع sleep برای این منظور هست)
فقط دقت داشته باشید که پارامتر ارسالی بر مبنای میلی ثانیه هست


DECLARE Sleep IN Win32API INTEGER
sleep(3000))

hamed_m
دوشنبه 22 خرداد 1385, 14:04 عصر
عرض کردم بدون استفاده از api . مشکل اینجاست که با استفاده از sleep دیگه کنترل از دستمون خارج میشه. مثلا نمیشه progress bar داشت و پیشرفت اجرای برنامه رو نمایش داد.
بازم ممنون

rezaTavak
دوشنبه 22 خرداد 1385, 19:13 عصر
سلام

با دستور read events و یک تایمر که میشه به _screen اضافه کرد.

hamed_m
دوشنبه 22 خرداد 1385, 23:09 عصر
استفاده از تایمر تنها راه مناسب بنظر میرسه اما نکته اساسی اینجاست که دستورات تکراری نیستند و باید تایمرهای متفاوت قرار داد و به این ترتیب تعداد تایمرها بالا میره.
ممنون

rezaTavak
سه شنبه 23 خرداد 1385, 12:06 عصر
شما باید در این حالت از DO CASE در یک تایمر استفاده کنید.