PDA

View Full Version : سوال: از کار انداختن کلیدهای خاص ویندوز



mz6488
شنبه 28 بهمن 1391, 10:49 صبح
سلام.چجوری میشه کلیدهای خاص ویندوز رو با سی شارپ غیر فعال کرد.مثلا اگه تو برنامه، کاربر ctrl+alt+delete را فشار داد عکس العملی نشون نده

danialafshari
شنبه 28 بهمن 1391, 11:14 صبح
سلام
این دسته کلیدها وضایف خاصی رو انجام میدن و وظیفه ی این 3 کلید باز کردن task manager هست که می تونی disable کنی و این ها هم غیر فعال میشن
در غیر این صورت باید Hook کنی
موفق باشی

c-sharp_South
شنبه 28 بهمن 1391, 11:31 صبح
بفرمایید:
Disable Special Keys in Win App C#
http://geekswithblogs.net/aghausman/archive/2009/04/26/disable-special-keys-in-win-app-c.aspx

docendo
شنبه 28 بهمن 1391, 11:42 صبح
سلام.چجوری میشه کلیدهای خاص ویندوز رو با سی شارپ غیر فعال کرد.مثلا اگه تو برنامه، کاربر ctrl+alt+delete را فشار داد عکس العملی نشون نده


شما اول کار با ریجستری را بدانید و سپس توی سی شارپ با فرمان دادن به ریجستری هرچی را را بخواهید غیر فعال سازید

این کد برای نمونه taskmgr را غیر فعال میکند

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe, Debugger, Hotkey Disabled

docendo
شنبه 28 بهمن 1391, 11:45 صبح
این هم برای ctrl+alt+delete

public void Docendo()
{
RegistryKey regkey;
string keyValueInt = "1";
string subKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Poli cies\\System";

try
{
regkey = Registry.CurrentUser.CreateSubKey(subKey);
regkey.SetValue("DisableTaskMgr", keyValueInt);
regkey.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}


برو خوش باش اما لطفا از این برنامه در راه خلاف استفاده نکید درضمن برای خروج از برنامه باید کدی که نوشته اید غیر فعال سازید تا احتمالا رایانه خودتان بهم نریزد

c-sharp_South
شنبه 28 بهمن 1391, 12:38 عصر
مرسی . چجوری باید غیر فعال کرد ؟؟؟؟؟؟؟؟؟؟؟؟؟

danialafshari
شنبه 28 بهمن 1391, 13:29 عصر
using Microsoft.Win32;

فعال :
RegistryKey key = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Poli cies\\System");
key.SetValue("DisableTaskMgr", "1", RegistryValueKind.DWord);
key.Close();

غیر فعال:
RegistryKey key = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Poli cies\\System");
key.SetValue("DisableTaskMgr", "0", RegistryValueKind.DWord);
key.Close();

mz6488
شنبه 28 بهمن 1391, 16:05 عصر
مرسی از همتون.میشه همین کدها رو واسه کلیدهای win،ctrl+esc،alt+f4 هم بذارین

danialafshari
شنبه 28 بهمن 1391, 20:25 عصر
مرسی از همتون.میشه همین کدها رو واسه کلیدهای win،ctrl+esc،alt+f4 هم بذارین

دیگه اینجا باید Hook کنی

mz6488
یک شنبه 29 بهمن 1391, 11:59 صبح
حالا این وسط hook چیه؟اگه منبع خوبی سراغ دارین بگین تا برم دنبالش

danialafshari
یک شنبه 29 بهمن 1391, 12:10 عصر
Hook چیست
Hook یک تابع callback میباشد که به برنامه ما این امکان را میدهد تا اطلاعات قبل از رسیدن به مقصد انها را دریافت کند و hook میتواند این اطلاعات را قبل از رسیدن به مقصد وارسی یا تغییر دهد ویندوز دارای هوک های مختلفی میباشد که هر نوع به منضور دسترسی به اطلاعات خاصی طراحی شده اند بطور مثال میتوان با استفاده از WH_MOUSE hook پیغامهای مربوط به موس را مانیتور کرد هنگامی که برنامه ما از یکی این تابع callback که انرا hook procedure می نامنداستفاده میکند هنگامی که پیغامی که وابسته به ان هوک باشد ارسال شود ویندوز ان پیغام را به hook مورد نظر که به ثبت رسیده باشد ارسال میکند
http://www.codeproject.com/Articles/6362/Global-System-Hooks-in-NET

docendo
یک شنبه 29 بهمن 1391, 13:14 عصر
مرسی از همتون.میشه همین کدها رو واسه کلیدهای win،ctrl+esc،alt+f4 هم بذارین


این کدها نیز برای هوک کردن Alt+F4



( (lParam.flags == 32) && (lParam.vkCode == 0x73) ) || // Alt+F4