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

كيف يمكن أن أغلق برنامج معين بعد فترة :

مغلق
بدأه فادي لطف في 1 مايو 2002 · 4 رد · 1,622 مشاهدة · في أرشيف منتدى الدلفي
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هل يمكن صنع برنامج أقوم بتعيرة ( أن بعد ربع ساعة أغلق الديلفي أو الـ Word مثلاً أو أي برنامج آخر )

وإذا كان لايمكن فهل أستطيع أن أصنعه بحيث يغلق كل البرامج المفتوحة بعد مدّه محدده

وشكراً لكم مقدماً .

فادي

#2

السلام عليكم

احدى الطرق لعمل ذلك هي استخدام Timer سواء كان VCL Timer component أو الدالة settimer حيث يتم قياس الوقت .وبعد مرور المدة التي تحددها ( ربع ساعة مثلا ) يتم اغلاف البرنامج المحدد .

لاغلاق notepad مثلا

function close_it:bool;
var
myhwnd:HWND;
begin
result:=true;
myhwnd:=FindWindow('NotePad',nil);
if myhwnd<>0 then
     SendMessage (myhwnd, WM_CLOSE, 0, 0)
else result:=false;
end;

في الكود السابق سيتم اغلاق كل النوافذ المفتوحة من notepad , وذلك لاننا استخدمنا nil في الدالة FindWindow . ان كان يراد اغلاق واحدة بعنيها - باستخدام الكود السابق - فيجب كتابة الـ caption التابع للنافذه بدلا عن nil

myhwnd:=FindWindow('NotePad','tmaaa.txt - Notepad');

طبعا هذه احدى الطرق , وهناك طرق اخرى ربما تكون اقوى .....

اضافه :

source code قد يفيد :

http://www.swissdelphicenter.ch/en/showcode.php?id=616

http://www.swissdelphicenter.ch/en/showcode.php?id=593

C++ builder هناك مثال اسمه PROCVIEW يمكن الاطلاع عليه .

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#3

أخي العزيز tmaaa :

شكراً لك على سرعة ردّك

ولكن كيف يمكن إغلاق ملف تنفيذي (exe) معين مثل (Delphi 5.exe).

وشكراً لك مرة ثانية .

#4

السلام عليكم

جرب الكود الاتي و اخبرني كيف النتيجة .

الكود مأخوذ من الرابطين السابقين مع اجراء بعض التعديلات

Add 1 button ,1 Edit

uses
Psapi, tlhelp32;
....

procedure Close_EXE(Wanted_EXE:string);
var
  aSnapshotHandle: THandle;
  aProcessEntry32: TProcessEntry32;
  bContinue: BOOL;
  Exefname:string;
  Ret: BOOL;
  PrID: Integer; // processidentifier
  Ph: THandle;   // processhandle
begin
  aSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  aProcessEntry32.dwSize := SizeOf(aProcessEntry32);
  bContinue := Process32First(aSnapshotHandle, aProcessEntry32);
  while Integer(bContinue) <> 0 do
  begin
    Exefname:=strupper(pchar(ExtractFileName(aProcessEntry32.szExeFile)));
    if(Exefname=strupper(pchar(Wanted_EXE)))then
    begin
       showmessage('I found it !');
       if MessageDlg('Do you want to Terminate "' +Exefname + '"?' + ^J +
                  'It''s possible the system becames instable or out of' + ^J +
                  'control......',
        mtConfirmation, [mbYes, mbNo], 0) = mrYes then
      begin
       PrID := StrToInt('$' + IntToHex(aProcessEntry32.th32ProcessID, 4));
       Ph := OpenProcess(1, BOOL(0), PrID);
       Ret := TerminateProcess(Ph, 0);
       if Integer(Ret) = 0 then
         MessageDlg('Cannot terminate "' + Exefname + '"',
                     mtInformation, [mbOK], 0);
       end;
    end;
    bContinue := Process32Next(aSnapshotHandle, aProcessEntry32);
  end;
  CloseHandle(aSnapshotHandle);

end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Close_EXE(Edit1.Text);
end;

شغل wordpad مثلا .

بعد تنفيذ الكود اكتب في الـ edit ما يلي wordpad.exe ثم اضغط على الـ button و لاحظ ما الذي سيحصل .

بالنسبة لدلفي عليك بكتابة delphi32.exe

ان كنت تريد بطريقة الرد الاول عليك بمعرفة الـ class الخاص بــ delphi وهو TAppBuilder عليك بتغيير ما يلي في الكود الموجود في ردي الاول

myhwnd:=FindWindow('TAppbuilder','delphi 6 - Project2');

حيث ان delphi 6 - Project2 هو الـ caption لبرنامج الدلفي المراد اغلاقه . ان استخدمت nil سيغلق كل برامج الدلفي المفتوحة .

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#5

شكراً لك أخي العزيز tmaaa على هذا الكود .

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…