السلام عليكــم ورحمـة الله وبركاتــه ،،
تعطيل زر الويندوزلوحده + طريقة تعطيل الكيبورد كلها
وعليكــم السـلام ورحمة الله وبركاتـه..
يمكنك استخدام دالة الـAPI المسماة BlockInput والتى تقوم بحجب مدخلات لوحة المفاتيح والفأرة وهذا هو شكلها
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern int BlockInput(bool fBlock);
private void Form1_Load(object sender, EventArgs e)
{
//Start blocking...
BlockInput(true);
//Do something here...
BlockInput(false);
}حيث أنها تقوم بحجب المدخلات عند تمرير القيمة true كقيمة للمعامل fBlock ثم تقوم بإلغاء الحجب عند استدعاءها مرة أخرى مع تمرير القيمة false
- أو -
يمكنك عمل Hook على لوحة المفاتيح لحجب مفاتيح معينة وهذا مثال يقوم بحجب مفتاح الويندوز
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern int SetWindowsHookEx(int idHook, HookProc lpfn, int hmod, int dwThreadId);
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern int CallNextHookEx(int hHook, int ncode, int wParam, IntPtr lParam);
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern int UnhookWindowsHookEx(int hHook);
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
static extern int GetModuleHandle(string lpModuleName);
delegate int HookProc(int ncode, int wParam, IntPtr lParam);
[System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)]
struct KBDLLHOOKSTRUCT
{
public Keys vkCode;
public int scanCode;
public int flags;
public int time;
public int dwExtraInfo;
}
const int WH_KEYBOARD_LL = 13;
const int HC_ACTION = 0;
int hHook;
int KeyboardHook(int ncode, int wParam, IntPtr lParam)
{
KBDLLHOOKSTRUCT kbhs=(KBDLLHOOKSTRUCT)System.Runtime.InteropServices.Marshal.PtrToStructure(lParam, typeof(KBDLLHOOKSTRUCT));
if (kbhs.vkCode == Keys.LWin || kbhs.vkCode == Keys.RWin)
return 1;
return CallNextHookEx(0, ncode, wParam, lParam);
}
private void Form1_Load(object sender, EventArgs e)
{
HookProc hp = new HookProc(KeyboardHook);
hHook=SetWindowsHookEx(WH_KEYBOARD_LL, hp, GetModuleHandle(null), 0);
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
UnhookWindowsHookEx(hHook);
}تم تعديل هذه المشاركة بواسطة GHOST2010 في 8 سبتمبر 2009 في 05:12
إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال