PDA

View Full Version : 1 سوال در مورد Ctrl+Alt+Dlt



anf-b
دوشنبه 21 دی 1383, 11:49 صبح
من قبلنا یک کد از سایت دلفی ای ار . کام گرفتم که Ctrl+alt+Dlt رو غیر فعال می کرد ولی هرچی روش کار می کنم جواب نمی ده!
و کار نمی کنه اگه میشه یک لطف بکنید و یک نگاه به این کد بندازید و به من بگید چه جوری میشه ازش استفاده کرد ::نوشتن::
================
<font class="content">
<p class="normal" dir="rtl">ابتدا پروسیجر زیر را در قسمت Implementation در یونیت
برنامه خود قرار دهید. </p>
<div dir="rtl">
<pre class="code">procedure SystemKeys(Disable: Boolean);
var OldVal : LongInt;
begin
SystemParametersInfo
(SPI_SCREENSAVERRUNNING,
Word(Disable),
@OldVal,
0);
end;</pre>
</div>
<p class="normal" dir="rtl">حالا از این پروسیجر در هر جای برنامه که می خواهید می
توانید استفاده کنید.

تنها پارامتر این پروسیجر Disable از نوع منطقی(Boolean) است که اگر این پارامتر
True باشد کلیدها غیر فعال می شود و اگر False باشد کلیدها فعال میشود. در واقع این
پروسیجر ویندوز رو گول میزنه و ویندوز فکر میکنه که Screen Saver اجرا هستش. این
کار مانع از عمل کردن کلید های Ctrl+Alt+Del, Alt+Tab, Ctrl+Esc می شود. </p>
</font>
ممنون
اگه میشه سورس یک برنامه رو با وجود دو دگمه برای فعال و غیر فعال کردنش رواینجا بزارید (اگه حال داشتین) :موفق:

_alish_
دوشنبه 21 دی 1383, 13:17 عصر
uses
Registry;

procedure DisableTaskManager&#40;Activ&#58; Boolean&#41;;
var
Reg&#58; TRegistry;
begin
Reg &#58;= TRegistry.Create;
Reg.RootKey &#58;= HKEY_CURRENT_USER;

Reg.OpenKey&#40;'Software', True&#41;;
Reg.OpenKey&#40;'Microsoft', True&#41;;
Reg.OpenKey&#40;'Windows', True&#41;;
Reg.OpenKey&#40;'CurrentVersion', True&#41;;
Reg.OpenKey&#40;'Policies', True&#41;;
Reg.OpenKey&#40;'System', True&#41;;

if Activ = True then
begin
Reg.WriteString&#40;'DisableTaskMgr', '1'&#41;;
end
else if Activ = False then
begin
Reg.DeleteValue&#40;'DisableTaskMgr'&#41;;
end;
Reg.CloseKey;
end;


procedure TForm1.Button1Click&#40;Sender&#58; TObject&#41;;
begin
DisableTaskManager&#40;True&#41;;
end;