یوسف زالی
چهارشنبه 29 آذر 1391, 03:32 صبح
سلام.
من وقتی در یک ممو مثلا کلید a رو می زنم به ترتیب این اتفاقات می افته:
WM_KEYDOWN, wParam=65, lParam=1966081
WM_CHAR, wParam=97, lParam=1966081
WM_KEYUP, wParam=65, lParam=-1071775743
حالا می خوام دستی این کار رو کنم، دو بار a می زنه!!
متد مورد استفاده = PostMessage
توضیح = دارم برای برنامه ای هات کی های رشته ای می گذارم. برای این کار باید ابتدا تمام مسیج های فشرده شدن کلید رو هندل کنم. ضبطش کنم و بعد از بررسی شبیه سازیش کنم.
مشکل من اینه که فکر کنید در قسمت OnKeyUp یک ادیت کدی نوشتید. اون کد وقتی با متد keybd_event کار می کنید اصلا کال نمی شه.
به عبارت دیگه اون متد اصلا مسیج WM_KEYUP رو کال نمی کنه.
اصلا شاید راه بهتری برای این کار به ذهن دوستان برسه. ممنون می شم راهنمایی کنید.
دقت کنید که مثلا اگر رشته HotKey تعریف شده برای کاری ali باشه برنامه با زدن al به اندازه تعیین شده (در اینجا نیم ثانیه) منتظر می مونه تا ببینه شاید کاراکتر بعدی i باشه. در این صورت از تمام رشته صرف نظر می کنه (انگار اصلا رشته ای وارد نشده) و به جاش کاری که گفتیم انجام می ده. اگر کاراکتر آخر i نبود یا زمان از حد خاصی بیشتر شد برنامه کاراکتر های فشرده شده رو commit می کنه. کاربرد مثلا در استفاده از بارکد برای تعیین کارهای خاص ، یا حتی در وسط برنامه بنویسیم taraz بره فرم تراز رو باز کنه نه اینکه بنویسه تراز!
خلاصه مشکل:
سوال 1
--------
چه راهی برای تعریف هات کی های رشته ای سراغ دارید؟
سوال 2
--------
چرا با شبیه سازی روند مسیج ها یک کاراکتر اضافی تولید می شه؟
با تشکر.
دلفی 7 - وین 7
فکر نمی کنم مرتبط به نسخه دلفی باشه.
دوستان فوریه!
من وقتی در یک ممو مثلا کلید a رو می زنم به ترتیب این اتفاقات می افته:
WM_KEYDOWN, wParam=65, lParam=1966081
WM_CHAR, wParam=97, lParam=1966081
WM_KEYUP, wParam=65, lParam=-1071775743
حالا می خوام دستی این کار رو کنم، دو بار a می زنه!!
متد مورد استفاده = PostMessage
توضیح = دارم برای برنامه ای هات کی های رشته ای می گذارم. برای این کار باید ابتدا تمام مسیج های فشرده شدن کلید رو هندل کنم. ضبطش کنم و بعد از بررسی شبیه سازیش کنم.
مشکل من اینه که فکر کنید در قسمت OnKeyUp یک ادیت کدی نوشتید. اون کد وقتی با متد keybd_event کار می کنید اصلا کال نمی شه.
به عبارت دیگه اون متد اصلا مسیج WM_KEYUP رو کال نمی کنه.
اصلا شاید راه بهتری برای این کار به ذهن دوستان برسه. ممنون می شم راهنمایی کنید.
دقت کنید که مثلا اگر رشته HotKey تعریف شده برای کاری ali باشه برنامه با زدن al به اندازه تعیین شده (در اینجا نیم ثانیه) منتظر می مونه تا ببینه شاید کاراکتر بعدی i باشه. در این صورت از تمام رشته صرف نظر می کنه (انگار اصلا رشته ای وارد نشده) و به جاش کاری که گفتیم انجام می ده. اگر کاراکتر آخر i نبود یا زمان از حد خاصی بیشتر شد برنامه کاراکتر های فشرده شده رو commit می کنه. کاربرد مثلا در استفاده از بارکد برای تعیین کارهای خاص ، یا حتی در وسط برنامه بنویسیم taraz بره فرم تراز رو باز کنه نه اینکه بنویسه تراز!
خلاصه مشکل:
سوال 1
--------
چه راهی برای تعریف هات کی های رشته ای سراغ دارید؟
سوال 2
--------
چرا با شبیه سازی روند مسیج ها یک کاراکتر اضافی تولید می شه؟
با تشکر.
دلفی 7 - وین 7
فکر نمی کنم مرتبط به نسخه دلفی باشه.
دوستان فوریه!