PDA

View Full Version : مشکل در شبیه سازی فشردن دو دکمه کیبورد



loo30fer
چهارشنبه 27 بهمن 1389, 19:20 عصر
با سلام خدمت دوستان و اساتید
من برای گرفتن (هایلایت) 3 کلمه اول در Edit میخوام از روش نگه داشتن دکمه SHIFT و زدن 3 بار دکمه RIGHT اینکار بکنم ولی نمیشه از این کد هم استفاده میکنم ولی نمیشه نمیدونم چرا؟
ضمنا برای اینکار حتما نیاز به همین شبیه سازی دارم و برای بهتر متوجه شدن موضوع عکس رو هم پیوست کردم
اگه یکم مبتدی راهنمایی کنید ممنون میشم و بگین مشکل از کجای کار کنه با تشکر
66439


Edit1.SetFocus;
keybd_event(VK_LEFT,0,0,0);
keybd_event(VK_LEFT,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT,0,0,0);
keybd_event(VK_RIGHT,0,0,0);
keybd_event(VK_RIGHT,0,0,0);
keybd_event(VK_RIGHT,0,0,0);
keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_RIGHT,0,KEYEVENTF_KEYUP,0);

AliReza Vafakhah
چهارشنبه 27 بهمن 1389, 19:42 عصر
از این کد استفاده کنید ، ساده هست



procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.SetFocus;
Edit1.SelStart:= 0;
Edit1.SelLength:= 3;
end;

loo30fer
چهارشنبه 27 بهمن 1389, 19:46 عصر
ممنون ولی دوست عزیز همینطور که گفتم حتما باید از روش شبیه سازی دکمه ها استفاده کنم

MohsenB
جمعه 06 اسفند 1389, 10:14 صبح
با سلام خدمت دوستان و اساتید
من برای گرفتن (هایلایت) 3 کلمه اول در Edit میخوام از روش نگه داشتن دکمه SHIFT و زدن 3 بار دکمه RIGHT اینکار بکنم ولی نمیشه از این کد هم استفاده میکنم ولی نمیشه نمیدونم چرا؟
ضمنا برای اینکار حتما نیاز به همین شبیه سازی دارم و برای بهتر متوجه شدن موضوع عکس رو هم پیوست کردم
اگه یکم مبتدی راهنمایی کنید ممنون میشم و بگین مشکل از کجای کار کنه با تشکر
66439


Edit1.SetFocus;
keybd_event(VK_LEFT,0,0,0);
keybd_event(VK_LEFT,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT,0,0,0);
keybd_event(VK_RIGHT,0,0,0);
keybd_event(VK_RIGHT,0,0,0);
keybd_event(VK_RIGHT,0,0,0);
keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_RIGHT,0,KEYEVENTF_KEYUP,0);


سلام

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



keybd_event(VK_RIGHT,0,0,0);
keybd_event(VK_RIGHT,0,KEYEVENTF_KEYUP,0);

البته این کار غیر از کلید شیفت هستش که اونو درست نوشتین.
بعد از فشار هر کلید هم نیاز به یک وقفه دارین . پس کدتون این جوری میشه:



Edit1.SetFocus;
keybd_event(VK_LEFT,0,0,0);
keybd_event(VK_LEFT,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT,0,0,0);
keybd_event(VK_RIGHT,0,0,0);
keybd_event(VK_RIGHT,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_RIGHT,0,0,0);
keybd_event(VK_RIGHT,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_RIGHT,0,0,0);
keybd_event(VK_RIGHT,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);

موفق و پیروز باشید