PDA

View Full Version : چگونه دکمه ویندوز صفحه کلید برای کاربر قفل شود



iman_s52
شنبه 15 مرداد 1384, 17:15 عصر
سلام
من در برنامه ام میخواهم کاری بکنم
که دکمه ویندوز صفحه کلید برای کاربر قفل شود در واقع غیر فعال شود
چگونه این کار را انجام دهم
کمکم کنید
متشکرم

sasan_vm
یک شنبه 16 مرداد 1384, 09:47 صبح
سلام
دوست عزیز شما این سوال رو در گروههای مختلف مطرح کردید و من چندین بار جوابتون
رو دادم. این هم برای اخرین بار لینک زیر شامل سورس برنامه و یک نمونه برنامه اجرائی
می باشد که به راحتی میتوانید از آن استفاده کنید اگر سورس را با
Borland C++ Builder نوشته ام تبدیل ان به دلفی کار مشکلی نیست.

http://www.barnamenevis.org/forum/showthread.php?t=25879

توضیح:
برای از کار انداختن Start Menu شما باید دو کار بکنید
1- غیر فعال کردن WindowHandle با این کار Input Focus هر پنجراه ی
غیر فعال میشود . البته Start menu یک پنجره عادی نیست و بعد ار این کار
ورودی موس را دریافت نمی کند ولی با HotKey Window, Ctrl-Esc
فعال میشود برای از کار انداختن این کلیدها باید مرحله 2 را انجاام دهید.

2 - باید پروسه پردازش کی بورد را در اختیار بگیریم
بدین صورت که کلیدها را چک میکنیم اگر کلید های فوق باشند به راحتی
از تابع پروسه return میکنید در غیر این صورت میگذاریم پروسه Default ادامه یابد.
کد این قسمت را بصورت DLL نوشتم تا استفاده از ان راحت تر باشد.
DLL مربوطه همراه سورس در لینک فوق موجود می باشد.

با فراخوانی کد زیر StartMenu غیر فعال میشود. تابع DisableTaskKeys از TaskKeyHook.DLL
فراخوانی میشود:


void __fastcall DisableStartMenu(bool bDisable)
{
HWND hwnd = FindWindow("Shell_traywnd", NULL);
hwnd = GetWindow(hwnd, GW_CHILD);
EnableWindow(hwnd, !bDisable);
// install keyboard hook
// call from DLL TaskKeyHook.DLL
::DisableTaskKeys(bDisable, false);
}

امیدوارم جوابتان را گرفته باشید غیر فعال کردن Start Menu
یک کلید نیست که با روشن و خاموش کردن ان فعال و غیر فعال شود.

موفق باشید.