View Full Version : فشردن مجازی کیبورد با دلفی
Zahed2008
دوشنبه 09 دی 1387, 09:18 صبح
سلام دوستان،
می خواستم بپرسم چطوری می شه یکی از دکمه های کیبورد رو بطور مجازی فشرد. مثلاً بشه دکمه Alt رو روی ویندوز بطور مجازی در زمان دلخواه بفشاری.
ممنون می شم راهنمایی ام کنید.
Felony
دوشنبه 09 دی 1387, 09:50 صبح
می خواستم بپرسم چطوری می شه یکی از دکمه های کیبورد رو بطور مجازی فشرد.
Keybd_event(*,0,0,0);
به جای ستاره کد کلید مورد نظرت رو بزار .
shervin farzin
سه شنبه 10 دی 1387, 00:18 صبح
سلام
براي فشردن مجازي كليدي از صفحه كليد كدي كه دوستم SmileSoft نوشته كاملا درسته
ولي به يك نكته ديگه هم عنايت داشته باشيد و اون اين كه به همين ترتيب مجازي كه كليد رو
فشار داديد ، در صورتي كه اون كليد يكي از كليدهاي كنترلي مثل Alt , Ctrl , Delete , F1..12 , ... باشه
بايد اون كليد رو رها هم بكنيد وگرنه مثل اين ميشه كه شما انگشتتون رو بذارين روي دكمه و برش نداريد !!!
براي رها كردن دكمه اي كه از پيش فشرده شده ميتونين از اين كد استفاده كنيد :
keybd_event(*,0,KEYEVENTF_KEYUP,0);
كه به جاي علامت ستاره بايد كدي كه مربوط به كليد مورد نظر هست رو وارد كنيد .
به عنوان مثال در كد زير فرايند كپي كردن يك متن به كمك تركيب Ctrl + C نشون داده شده :
keybd_event(VK_CONTROL,0,0,0);
keybd_event(ord('C'),0,0,0);
keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
موفق باشيد.
Felony
سه شنبه 10 دی 1387, 07:39 صبح
ولي به يك نكته ديگه هم عنايت داشته باشيد و اون اين كه به همين ترتيب مجازي كه كليد رو
فشار داديد ، در صورتي كه اون كليد يكي از كليدهاي كنترلي مثل Alt , Ctrl , Delete , F1..12 , ... باشه
بايد اون كليد رو رها هم بكنيد وگرنه مثل اين ميشه كه شما انگشتتون رو بذارين روي دكمه و برش نداريد !!!
ممنون از تذکرتون ، من این نکته رو که در مورد کلیدهای کنترلی باید در آخر کار رهاشون کرد رو نمیدونستم چون با این دستور تا به حال برای کلید های کنترلی کار نکرده بودم ، جالب بود .
جواد ملاولی
پنج شنبه 12 دی 1387, 00:22 صبح
سلام. چطور میشه این کار رو در مورد موس انجام داد؟
من کد زیر رو نوشتم ولی کار نکرد:
Keybd_event(VK_LBUTTON,0,0,0);
shervin farzin
پنج شنبه 12 دی 1387, 01:16 صبح
سلام
براي Left Click يا Right Click ، كد همينه فقط اتفاق افتادن شرايطي كه همچين كدي كار كنه
يه كم سخته . به عنوان مثال شما اگه يه دكمه روي فرم بذاريد و داخل رويداد OnKeyDown
اين كد رو بنويسيد :
if key = VK_RBUTTON then showmessage('Right Click');
حالا برنامه رو اجراء كنيد و هرچقدر كه ميخوايد روي دكمه راست كليك كنيد !!! هيچ message به
شما نشون داده نميشه . اما به كمك تابع Keybd_Event ميتونين اين رويداد رو با راست كليك
اجراء كنيد . براي اين كار يه دكمه ديگه روي فرم بذاريد و در رويداد OnClick دكمه دوم بنويسيد :
button1.SetFocus;
keybd_event(VK_RBUTTON,0,0,0);
keybd_event(VK_RBUTTON,0,KEYEVENTF_KEYUP,0);
حالا به كمك دكمه Tab ، نشانگر Focus رو روي دكمه دوم ببريد ( بدون دخالت موس ) و دكمه
Space رو بزنيد تا مثلا اون دكمه كليك بشه . در اين موقع خواهيد ديد كه Showmessage از
رويداد OnKeyDown مربوط به Button1 اجراء ميشه .
موفق باشيد .
Zahed2008
پنج شنبه 12 دی 1387, 08:28 صبح
سلام دوستان، ممنون از جوابتون.
من دستورات بالا رو اجرا کردم، ولی فقط روی نرم افزار جواب می ده. چطوری می تونم روی ویندوز این کار رو بکنم؟ در ضمن دکمه مربوط به Alt چی می شه؟
shervin farzin
پنج شنبه 12 دی 1387, 11:39 صبح
سلام
دكمه Alt ميشه VK_Menu .
اگه دكمه Alt رو با Keybd_event فشار بديد و رها نكنيد . نه تنها در برنامه خودتون بلكه در ويندوز هم
تاثير خودش رو داره و حتي ميتونه باعث دردسر هم بشه !
MOJTABAATEFEH
جمعه 22 مرداد 1389, 12:20 عصر
سلام
براي Left Click يا Right Click ، كد همينه فقط اتفاق افتادن شرايطي كه همچين كدي كار كنه
يه كم سخته . به عنوان مثال شما اگه يه دكمه روي فرم بذاريد و داخل رويداد OnKeyDown
اين كد رو بنويسيد :
if key = VK_RBUTTON then showmessage('Right Click');حالا برنامه رو اجراء كنيد و هرچقدر كه ميخوايد روي دكمه راست كليك كنيد !!! هيچ message به
شما نشون داده نميشه . اما به كمك تابع Keybd_Event ميتونين اين رويداد رو با راست كليك
اجراء كنيد . براي اين كار يه دكمه ديگه روي فرم بذاريد و در رويداد OnClick دكمه دوم بنويسيد :
button1.SetFocus;
keybd_event(VK_RBUTTON,0,0,0);
keybd_event(VK_RBUTTON,0,KEYEVENTF_KEYUP,0);
حالا به كمك دكمه Tab ، نشانگر Focus رو روي دكمه دوم ببريد ( بدون دخالت موس ) و دكمه
Space رو بزنيد تا مثلا اون دكمه كليك بشه . در اين موقع خواهيد ديد كه Showmessage از
رويداد OnKeyDown مربوط به Button1 اجراء ميشه .
موفق باشيد .
دوست عزیز چطور می توان با زدن یک کلید در برنامه چند کلید کیبورد رو شبیه سازی کرد مثلا : با زدن F1 در Edit1 شبیه سازی Ctrl+Alt+Delete شود یا ترکیب چند کلید دیگه
با تشکر
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.