PDA

View Full Version : مدیریت کلید های صفحه کلید



matinebi
دوشنبه 23 شهریور 1388, 13:46 عصر
چطور عمل کلیک روی یک کلید در صفحه کلید را میتوان مدیریت کرد....

مثلا میخواهم که چندین بار روی یک کلید(مثلا کلید n) کلیک شود نیازی به کاراکتر اون کلید ندارم فقط عمل کلیک مهم هست

etoshey
دوشنبه 23 شهریور 1388, 14:37 عصر
چیزی که من فهمیدم...
میتونین از hook استفاده کنید.

جواد ملاولی
دوشنبه 23 شهریور 1388, 14:42 عصر
سلام. منظورتون از کلیک روی یک کلید از صفحه کلید چیه؟

matinebi
دوشنبه 23 شهریور 1388, 14:50 عصر
ببینید دقیقا انگار که خود بنده دارم روی یک کلید مثلا n چندین بار میزنم
میخوام این عمل رو کد نویسی کنم و نیازی به کاراکتر اون کلید یا .... ندارم

etoshey
دوشنبه 23 شهریور 1388, 15:08 عصر
میتونین از SENDINPUT استفاده کنید.و یک رکرد از نوع Tinput .

Felony
دوشنبه 23 شهریور 1388, 15:10 عصر
از تابع Keybd_Event استفاده کنید .

etoshey
دوشنبه 23 شهریور 1388, 15:31 عصر
Edit1.SetFocus;
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event(Ord('A'), 0, 0, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
استفاده از keybd_event راحت تر است.

Mahmood_M
دوشنبه 23 شهریور 1388, 17:54 عصر
اگه کد زیر استفاده کردید :


Edit1.SetFocus;
keybd_event(Ord('A'), 0, 0, 0);

به یک نکته باید توجه کنید و اون این که Edit وقتی Focus میکنه ، متن درون خودش رو انتخاب میکنه و وقتی کلیدی زده شد ، مقدار اون کلید به جای کل متن داخل Edit قرار میگیره ، برای این که مثلا کلید زده شده رو به آخر متن درون Edit اضافه کنید ، باید بعد از SetFocus مقدار SelStart مربوط به Edit رو با مقدار طور رشته ی درون Edit مقدار دهی کنید :


Edit1.SetFocus;
Edit1.SelStart := Length(Edit1.Text);
keybd_event(Ord('A'), 0, 0, 0);


موفق باشید ...

AbiriAmir
سه شنبه 24 شهریور 1388, 18:12 عصر
اگه کد زیر استفاده کردید :


Edit1.SetFocus;
keybd_event(Ord('A'), 0, 0, 0);

به یک نکته باید توجه کنید و اون این که Edit وقتی Focus میکنه ، متن درون خودش رو انتخاب میکنه و وقتی کلیدی زده شد ، مقدار اون کلید به جای کل متن داخل Edit قرار میگیره ، برای این که مثلا کلید زده شده رو به آخر متن درون Edit اضافه کنید ، باید بعد از SetFocus مقدار SelStart مربوط به Edit رو با مقدار طور رشته ی درون Edit مقدار دهی کنید :


Edit1.SetFocus;
Edit1.SelStart := Length(Edit1.Text);
keybd_event(Ord('A'), 0, 0, 0);


موفق باشید ...

به جاش میتونن خاصیت AutoSelect مربوط به Edit رو False کنن

Mahmood_M
سه شنبه 24 شهریور 1388, 21:50 عصر
به جاش میتونن خاصیت AutoSelect مربوط به Edit رو False کنن
بله ، حق با شماست ، حواسم نبود ... !
...

khoshblagh
دوشنبه 06 مهر 1388, 10:03 صبح
اگه کد زیر استفاده کردید :


Edit1.SetFocus;
keybd_event(Ord('A'), 0, 0, 0);



Edit1.SetFocus;
Edit1.SelStart := Length(Edit1.Text);
keybd_event(Ord('A'), 0, 0, 0);


موفق باشید ...
این کد برای یک ادیت باکس است . برای کلیک کردن buttom از چه کدی باید استفاده کرد؟
متشکرم

Mahmood_M
دوشنبه 06 مهر 1388, 12:14 عصر
این کد برای یک ادیت باکس است . برای کلیک کردن buttom از چه کدی باید استفاده کرد؟
باید روی Button فوکوس کنید و با تابع keybd_event کلید Enter رو شبیه سازی کنید :


BitBtn1.SetFocus;
keybd_event(VK_RETURN, 0, 0, 0);


موفق باشید ...