الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكن عمل برنامج لا يكمن اغلاقها

مغلق
بدأه format82 في 3 يونيو 2006 · 7 رد · 688 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اريد ان اعمل برنامج لا يستطيع المستخدم اغلاقها

قمت باغلاق alt + f4 ولكن يمكن اغلاقها من taskbar بالنقر علي زر الماوس اليمين

او اريد ان لا يظهر علي taskbar حتي لاستطيع اغلاقها

سوف ارفق لكم البرنامج

alt_f4.rar

#2

السلام عليكم

جرب هذا الكود لاخفاء البرنامج من TaskBar

procedure TMainForm.FormShow(Sender: TObject);
var
  hwndOwner: HWnd;
begin
  hwndOwner := GetWindow(Handle, GW_OWNER);
  ShowWindow(hwndOwner, SW_HIDE);
  // For Windows 2000, additionally call the ShowWindowAsync function:
  ShowWindowAsync(hwndOwner, SW_HIDE);
  ShowWindowAsync(Self.Handle, SW_HIDE);
end;

{
  Prevent the form from reappearing on the Taskbar after minimizing it:

  Verhindern, dass nach einem Minimize die Applikation wieder in der Taskbar
  erscheint:
}

private
  procedure WMSysCommand(var msg: TWMSysCommand); message WM_SysCommand;

{....}

implementation

procedure TMainForm.WMSysCommand(var msg: TWMSysCommand);
begin
  if msg.CmdType and $FFF0 = SC_MINIMIZE then
	hide
  else
	inherited;
end;
#3

بسم الله الرحمن الرحيم

أخي العزيز...

تستطيع ضمن الحدث onclose لأي form كتابة الكود التالي فقط... والذي يمنع من إغلاق النافذة, سواء باستخدام alt+F4 أو باستخدام زر الإغلاق أو باستخدام

القائمة التي تظهر عند النقر على الأيقونة الظاهرة على شريط المهام...

action:=canone;

أرجو أن أكون قد فهمت ما تقصده جيداً...

المال في الغربة وطن والفقر في الوطن غربة

#4

استخدمت طريقة الاخ in4maTic قد نجحت وشكرا لك

وايضا اشكر الاخ Menhad

ولكن اذا اردت عدم اعمل Minimized للبرنامج من ال taskbar بالنقر علي زر الماوس اليمين

لانني اريد ان يكون البرنامج ظاهرا على الشاشة (اي يكون في المقدمة)

#5

يا شباب لدى هذا الكود

   procedure TForm1.FormCreate(Sender: TObject);
begin
  // set your applications message handler to your new one
  Application.OnMessage := AppMessage;
end;

procedure TForm1.AppMessage(var Msg: TMSG; var Handled: Boolean);
begin
  // let your application handle all messages initially
  Handled := False;
  case Msg.Message of
	WM_SYSKEYDOWN:
	  if Msg.wParam = VK_F4 then
		Handled := True; // don't allow ALT-F4
  end;
end;

وهو لمنع استخدام alt + f4 لاغلاق التطبيق ولكن ارجو ان يكون هناك من يشرح هذا الكود بالتفصيل وما ذا تعنى كل كلمة فيه :wacko:

#6

اي تطبيق في Windows يستقبل الأحداث على شكل رسائل message من نظام التشغيل Wind0ws

في حالة تحرك الفأرة او استعمال لوحة الفاتيح ترسل Windows رسالة للتطبيق المعني بالأمر

في المثال فوق نقوم بانشاء دالة جديدة لتستقبل message و تتقوم بالغائه في حالة عان الزر Alt+F4

اي تقطع الطريق و كان الزر لم يضغط

d4baa0.gif
#7

هناك طريقة اسهل بكثير من الطريقة التي ذكرت

و هي في الحدث CloseQuery للفورم و ليس Onclose هناك Parameter اسمه CanClose

لو فرضنا انه عندك زر اسمه Cancel و تريد فقط عند الضغط عليه تنغلق الفورم

قم بتعريف متحول عام اسمه Allowclose من النمط Boolean و اسند له عند FormCreate القيمة false

الان عند النقر على زر Cancel قم باسناد القيمة true الى المتحول Allowclose

و في الحدث onCloseQuery

اكتب مايلي

canclose:= allowclose;

بالنسبة للشرح الكود السابق

اقتباس
procedure TForm1.FormCreate(Sender: TObject);

begin

// set your applications message handler to your new one

Application.OnMessage := AppMessage;

end;

procedure TForm1.AppMessage(var Msg: TMSG; var Handled: Boolean);

begin

// let your application handle all messages initially

Handled := False;

case Msg.Message of

WM_SYSKEYDOWN:

if Msg.wParam = VK_F4 then

Handled := True; // don't allow ALT-F4

end;

end;

الشرح: عند انشاء الفورم يتم اسناد التابع appmessage الى الحدث Applciation.onmessage

و الذي يعني انه عند ورود اي Message من نظام التشغيل الى Application سوف يتم تنفيذ التابع appmessage تمام.

الان في التابع appmessage :

نقوم بعمل case على الرسائل التي ترد الى التطبيق اذا كانت الرسالة هي من النوع syskeydown سوف يتم بعد ذلك

فحص قيمة المفتاح الذي تم ضغطه فاذا كان المفتاح المضغوط يحتوي على F4 فيتم امساك الرسالة و لا يتم تنفيذها اي تم تدميرها و ذلك باستخدام Handled

و الا لن يتم التقاط الرسالة و سوف تنفذ اذا لم يكن فيها F4

لفهم ما قلته جيدا يجب عليك الاطلاع على قليلا على API progrmming

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#8

:rolleyes: بارك الله فيكم يا يا شباب :lol:

هذا الموضوع مغلق.

مواضيع مشابهة