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

نام تاپیک: تشخیص این که چه کلیدی از صفحه کلید زده شده و واکنش به ان

  1. #1

    Question تشخیص این که چه کلیدی از صفحه کلید زده شده و واکنش به ان

    سلام . من دارم سعی می کنم در برنامه ام که تحت کنسول هست و برای ویندوز هست ، کاری کنم که کاربر به محض زدن کلیدی از صفحه کلید ، بدون زدن enter ، از طرف برنامه واکنشی ببیند . حالا فرض کنیم که قرار است واکنش برنامه چاپ همان علامتی که کاربر زده باشد . حالا من می خواهم به محض این که کاربر کلید ((+)+shift) (یعنی شیفت و +) را زد ، بدون این که enter زده شود برنامه سریعا + را چاپ کند و نگذارد که کاربر در ان خط بیشتر از این کاراکتر چیزی بنویسد .
    من این کد رو امتحان کردم ( ولی مطمئن نیستم کاربردی در زمینه ی سوالم داره یا نه ) :


    if(GetKeyState('A')&0x8000)){
    cout << "Worked!";
    }


    ولی کامپایلر اجراش نمی کنه و ازش رد میشه و دستورات بعدی رو اجرا می کنه !(از ویژوال استودیو 2015 استفاده می کنم)
    از تابعی مثل GetAsyncKeyState هم استفاده کردم اما نتیجه یکسان هست . (لازم به ذکر هست که کامپایلر ارور نمی ده و کتابخانه ی windows.h رو هم به برنامه اضافه کردم.)
    کسی می تونه کمکم کنه ؟ ممنون میشم .

  2. #2
    کاربر دائمی آواتار farhad_shiri_ex
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    سن
    37
    پست
    709

    نقل قول: تشخیص این که چه کلیدی از صفحه کلید زده شده و واکنش به ان

    نقل قول نوشته شده توسط اقای برنامه نویس مشاهده تاپیک
    سلام . من دارم سعی می کنم در برنامه ام که تحت کنسول هست و برای ویندوز هست ، کاری کنم که کاربر به محض زدن کلیدی از صفحه کلید ، بدون زدن enter ، از طرف برنامه واکنشی ببیند . حالا فرض کنیم که قرار است واکنش برنامه چاپ همان علامتی که کاربر زده باشد . حالا من می خواهم به محض این که کاربر کلید ((+)+shift) (یعنی شیفت و +) را زد ، بدون این که enter زده شود برنامه سریعا + را چاپ کند و نگذارد که کاربر در ان خط بیشتر از این کاراکتر چیزی بنویسد .
    من این کد رو امتحان کردم ( ولی مطمئن نیستم کاربردی در زمینه ی سوالم داره یا نه ) :


    if(GetKeyState('A')&0x8000)){
    cout << "Worked!";
    }


    ولی کامپایلر اجراش نمی کنه و ازش رد میشه و دستورات بعدی رو اجرا می کنه !(از ویژوال استودیو 2015 استفاده می کنم)
    از تابعی مثل GetAsyncKeyState هم استفاده کردم اما نتیجه یکسان هست . (لازم به ذکر هست که کامپایلر ارور نمی ده و کتابخانه ی windows.h رو هم به برنامه اضافه کردم.)
    کسی می تونه کمکم کنه ؟ ممنون میشم .

    #include <iostream>
    #include <windows.h>
    #include <bitset>
    #include <conio.h>

    using namespace std;

    //must be set to the ASCII value of that character
    //can use the virtual key code constants -> https://docs.microsoft.com/en-us/win...tual-key-codes

    //If the high-order bit is 1, the key is down; otherwise, it is up.
    //If the low-order bit is 1, the key is toggled.
    //A key, such as the CAPS LOCK key, is toggled if it is turned on.
    //The key is off and untoggled if the low-order bit is 0. A toggle key's indicator light (if any) on the keyboard will be on when the key is toggled, and off when the key is untoggled.

    int main()
    {
    cout << "press the (A or a) key:" ;

    short p_key =0x0;

    int a;
    cin >> a ;
    p_key=GetAsyncKeyState(0x41);
    if(p_key){
    cout << endl ;
    cout << p_key << endl ;
    cout << "key is (A) pressed.!" << endl;
    cout << endl << endl ;
    cout << bitset<16>(p_key) << endl ;
    cout << bitset<16>(GetAsyncKeyState(0x41)&0x8000)<< endl;
    } else
    cout << "wrong key" << endl;

    return 0;
    }


    نیازی هم به and کردن با ارزش ترین بیت نوع short یعنی (0x8000) با خروجی تابع GetAsyncKeyState نیست علتشم در تکه کد بالا اضافه کردم.
    و بهتر هم هست از نسخه همزمان تابع GetAsyncKeyState استفاده بشه!
    واینکه من فقط کدی گذاشتم که وقتی کلید a را فشرده شود واکنش نشان میده.
    آخرین ویرایش به وسیله farhad_shiri_ex : پنج شنبه 12 مهر 1397 در 11:41 صبح

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

  1. مبتدی: تشخیص فشرده شدن یک دکمه از صفحه کلید
    نوشته شده توسط sarakh در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 7
    آخرین پست: جمعه 07 تیر 1392, 13:49 عصر
  2. سوال: گرفتن معلومات مربوط اینکه چی کلیدی رو صفحه کلید زده شده
    نوشته شده توسط muttahary21 در بخش VB.NET
    پاسخ: 0
    آخرین پست: یک شنبه 14 فروردین 1390, 06:45 صبح
  3. سوال: گرفتن معلومات مربوط اینکه چی کلیدی رو صفحه کلید زده شده
    نوشته شده توسط muttahary21 در بخش VB.NET
    پاسخ: 0
    آخرین پست: شنبه 13 فروردین 1390, 06:57 صبح
  4. پاسخ: 5
    آخرین پست: چهارشنبه 23 دی 1388, 20:24 عصر
  5. تشخیص این که کاربر توی کدام صفحه هست؟؟
    نوشته شده توسط bbc_sh در بخش ASP.NET Web Forms
    پاسخ: 9
    آخرین پست: جمعه 04 بهمن 1387, 23:13 عصر

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

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