نمایش نتایج 1 تا 7 از 7

نام تاپیک: HotKey های رشته ای - اشکال در گرفتن مسیج های یک ممو! و باز سازی آن

  1. #1

    HotKey های رشته ای - اشکال در گرفتن مسیج های یک ممو! و باز سازی آن

    سلام.
    من وقتی در یک ممو مثلا کلید 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
    فکر نمی کنم مرتبط به نسخه دلفی باشه.
    دوستان فوریه!
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  2. #2

    نقل قول: HotKey های رشته ای - اشکال در گرفتن مسیج های یک ممو! و باز سازی آن

    برای استفاده دوستان:
    http://www.swissdelphicenter.ch/torr...ode.php?id=220

    سوال 1 به قوت خود باقی است.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  3. #3

    نقل قول: HotKey های رشته ای - اشکال در گرفتن مسیج های یک ممو! و باز سازی آن

    روند هندل و مونیتور کردنت به چه شکله ؟
    از کجا میدونی این مسیجها ارسال یا دریافت میشه؟
    چه راهی برای تعریف هات کی های رشته ای سراغ دارید؟
    این هات کی باید گلوبال باشه یا لوکال؟


  4. #4

    نقل قول: HotKey های رشته ای - اشکال در گرفتن مسیج های یک ممو! و باز سازی آن

    متد OnMessage شی Appliction رو باز نویسی کردم.
    می شه با گذاشتن شی ApplicationEvents روی فرم اصلی هم همین کار رو کرد.
    هات کی ها باید گلوبال باشه. هر جای برنامه حتی اگر فوکوس رو چیزی نباشه باید Fire بشه.
    با هات کی تکی مشکل ندارم من! (خیلی هم عالی، یکه یکه!!)
    در حالت گلوبال هم کار می کنه.
    مشکل رو هات کی های رشته ای هست.
    یک نکته فهمیدم:
    اگر مسیج OnKeyDown رو Handled کنید اتفاقات جالبی می افته. مثلا برا مسیج OnChar.
    در کل گیج شدم. با دستورات Translate و Dispach هم ره به جایی نبردم.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  5. #5

    نقل قول: HotKey های رشته ای - اشکال در گرفتن مسیج های یک ممو! و باز سازی آن

    چرا با شبیه سازی روند مسیج ها یک کاراکتر اضافی تولید می شه؟
    استفاده از این کد کافی هست :

      PostMessage(Memo1.Handle, WM_KEYDOWN, 65, 1966081);
    PostMessage(Memo1.Handle,WM_KEYUP, 65, -1071775743);


    WM_Char به صورت خودکار وقتی پیغام WM_KeyDown توسط TranslateMessage پردازش میشه به پنجره ای که فوکوس صفحه کلید رو در اختیار داره ارسال میشه ، نیازی نیست شما دوباره ارسالش کنید .

  6. #6

    نقل قول: HotKey های رشته ای - اشکال در گرفتن مسیج های یک ممو! و باز سازی آن

    حاجی مشکل من اینجاست:
    فرض کن به عمد مسیج WM_CHAR رو سند کردی، برنامه باید بتونه بگیرتش دیگه.
    وقتی هم گرفت و لاگ کرد باید بتونه اجراش کنه.
    حالا مشخص نمی شه که باید ازش صررف نظر کرد یا نه. یعنی نمشه فهمید اون مسیج دستی سند شده یا اثرات جانبی WM_KEYDOWN هست.
    اگر فقط و فقط با ورودی های کیبردی (کیبرد - بارکد ریدر ..) سروکار داشتیم کاملا حق با شما بود.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  7. #7

    نقل قول: HotKey های رشته ای - اشکال در گرفتن مسیج های یک ممو! و باز سازی آن

    فرض کن به عمد مسیج WM_CHAR رو سند کردی، برنامه باید بتونه بگیرتش دیگه.
    وقتی هم گرفت و لاگ کرد باید بتونه اجراش کنه.
    الان مشکلی این وسط نیست !

    شما میتونی یک Message Handler بنویسی و این پیغام رو اگر خواستی هندل کنی و بهش عکس العمل خاصی نشون بدی ، اگر هم خواستی کاری که به صورت پیشفرض براش تعریف شده رو انجام بده باید تابع DefaultHandler رو صدا بزنی .

    اینکه اون کد بالا هم حالت اکو ایجاد میکنه همونطور که گفتم طبیعی هست ، شما هم داری WM_KeyDown ( که خوش WM_Char رو میفرسته ) پاس میدی هم WM_Char رو به صورت جداگانه ، پس عملا این پیغام 2 بار ارسال میشه پس 2 بار هم عکس العمل نشون میده و کاراکتر رو چاپ میکنه .

تاپیک های مشابه

  1. حرفه ای: گرفتن لینک های موجود در یک رشته
    نوشته شده توسط ghiravani در بخش PHP
    پاسخ: 5
    آخرین پست: شنبه 08 مرداد 1390, 00:11 صبح
  2. گرفتن کد های فارسی از textbox
    نوشته شده توسط aloneman2005 در بخش VB.NET
    پاسخ: 1
    آخرین پست: جمعه 21 مهر 1385, 02:07 صبح
  3. گرفتن کد های فارسی از textbox
    نوشته شده توسط aloneman2005 در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: پنج شنبه 20 مهر 1385, 12:51 عصر
  4. اشکال دربخش مشاهده تاپیک‌های ارسال شده در فاصله زمانی دلخواه
    نوشته شده توسط MM_Mofidi در بخش گفتگو با مسئولین سایت، درخواست و پیشنهاد
    پاسخ: 3
    آخرین پست: شنبه 15 اسفند 1383, 00:22 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •