PDA

View Full Version : سوال: كليد ميانبر همگانی



Armin060
شنبه 07 شهریور 1388, 10:22 صبح
چطوری می تونم يه كليد ميانبر درست كنم كه همه جای برنامه كار كنه؟

Armin060
شنبه 07 شهریور 1388, 19:13 عصر
لطفا، يكی جواب بده. نياز دارم

EhsanAvr
یک شنبه 08 شهریور 1388, 00:23 صبح
سلام دوست عزیز.
اگه میخوای یه کلید میانبر درست کنی که وقتی که فرم فعال باشه کار کنه،میتونی در رویدادهای مربوط به صفحه کلید فرم کدشو بنویسی.برای مثال یه کد برات نوشتم که وقتی که دکمه A رو میزنین،برنامه End میشه. این نکته رو هم در نظر داشته باش که برای اینکه کلید های صفحه کلید روی فرم کار کنن باید خاصیت Key Preview رو True کنی.
اول رویداد Key UP یا Key Down یا Key Pressرو در Form Load فعال کن.


this.KeyUp += new KeyEventHandler(Form1_KeyUp);

بعد اینا رو بنویس:


if (e.KeyCode == System.Windows.Forms.Keys.A ) this.Close();


اگه هم میخای زمانی که فرم فعال نباشه مثلا برنامه Minimize باشه یا فرم مخفی باشه یا ... کلید های Shortcut کار کنن میتونی از API استفاده کنی.اگه در این مورد خواستی بگو تا برات توضیح بدم.

Armin060
یک شنبه 08 شهریور 1388, 05:06 صبح
نه دوست عزيز. نگرفتی چی ميگم. من می خوام يه كليد ميانبر درست كنم كه همه جای برنامه كار كنه، نه اينكه وقتی برنامه Minimize هست كار كنه. من می خوام اين كليد ميانبر رو F1 قرار بدم. يعنی Help. بعد كليد F1‌ تو برنامه زده شد، يه فرم راهنما باز ميشه.

Armin060
یک شنبه 08 شهریور 1388, 14:04 عصر
خواهش می كنم كه يكی جواب بده. يعنی هيچ راهی برای اين كار وجود نداره؟؟

EhsanAvr
یک شنبه 08 شهریور 1388, 17:04 عصر
این برنامه رو قبلا با ویژوال بیسیک نوشته بودم و چند وقت پیش اونو به سی شارپ تبدیل کردم.
اول داخل کلاس کتابخانه و تابع رو معرفی کن:


[System.Runtime.InteropServices.DllImport("user32")]
static extern int GetAsyncKeyState(long vkey);

بعد یه تایمر بزار و مقدار اونو به هر اندازه ای که میخوای سرعت نمونه برداری باشه بزار و داخل تایمر اینا رو بنویس:


int code;
for(long i=1;i<=255;i++)
{
code=0;
code=GetAsyncKeyState(i);

if(code!=0)
{
if (i == 8)
{
this.Close();
}
}
}


در این کد اگه کلید Backspace رو فشار بدیم،برنامه End میشه. میتونی به جای 8 از کد اسکی F1 استفاده کنی.

Armin060
یک شنبه 08 شهریور 1388, 17:16 عصر
تشكر. ولی اين روش سرعت برنامه رو تا حد زيادی پايين مياره و جواب سوالم رو پيدا كردم.

EhsanAvr
یک شنبه 08 شهریور 1388, 17:22 عصر
من که تو چند تا از برنامه هام ازش استفاده کردم و زیاد از سرعت برنامه کم نمیکنه.اول یکیشو بنویس و امتحان کن اگه سرعت برنامه روخیلی کم کرد اونوقت بگو تا یه راه بهتری براش پیدا کنیم. برای اینکه سرعت کم نشه میتونی مقدار تایمر رو افزایش بدی. مثلا من با 1ms که کار کردم،تغییر محسوسی در سرعت برنامه ندیدم ولی شما میتونین حتی با 100ms هم کار کنین.