سلام دوست عزیز.
باید از گلوبال شورت کات استفاده کنی ، که به سیستم عامل شورت کات های نرم افزارت رو معرفی میکنی ، برای انجام اینکار مراحل زیر رو دنبال کن :
- کد های زیر رو در کلاس فرم ات قرار میدی (با فرض اینکه اسم فرمت form1 است ، توی اینجا قرار میدی : public partial class Form1 : Form { ) :
[System.Runtime.InteropServices.DllImport("user32.d ll")]
private static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vk);
[System.Runtime.InteropServices.DllImport("user32.d ll")]
private static extern bool UnregisterHotKey(IntPtr hWnd, int id);
enum KeyModifier
{
None = 0,
Alt = 1,
Control = 2,
Shift = 4,
WinKey = 8
}
- باید شورت کات های گلوبالت رو به سیستم معرفی کنی ، که با زدن این دکمه های سیستم عامل به نرم افزار شما رجوع کنه ، برای اینکار کد زیر رو درون تابع سازنده فرم تون زیر متد InitializeComponent(); بنویسید )
RegisterHotKey(this.Handle, 0, (int)KeyModifier.None, Keys.F10.GetHashCode());
(در اینجا عدد صفری که وارد شده اهمیت داره ، و بعدا شما از طریق عددی که بنده اینجا صفر وارد کردم متوجه میشد چه دکمه زده شده است ، برای هر دکمه باید یک بار این کد را بنویسید و مقدار عدد و Keys رو تغییر بدید)
- و در آخر کارهایی که باید انجام شود رو مشخص میکنید :
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == 0x0312)
{
Keys key = (Keys)(((int)m.LParam >> 16) & 0xFFFF); // The key of the hotkey that was pressed.
KeyModifier modifier = (KeyModifier)((int)m.LParam & 0xFFFF); // The modifier of the hotkey that was pressed.
int id = m.WParam.ToInt32(); // The id of the hotkey that was pressed.
switch (id)
{
case 0: { } break;
}
}
}
برای هر دکمه (که یک عدد اختصاص دادید ، که در اینجا فقط عدد صفر رو برای کلید F10 مشخص کردم) یک case درون switch قرار میدید و با زدن F10 ، هر کدی که در کیس 0 نوشتید ، اجرا میشود