هل يمكن صنع برنامج أقوم بتعيرة ( أن بعد ربع ساعة أغلق الديلفي أو الـ Word مثلاً أو أي برنامج آخر )
وإذا كان لايمكن فهل أستطيع أن أصنعه بحيث يغلق كل البرامج المفتوحة بعد مدّه محدده
وشكراً لكم مقدماً .
فادي
هل يمكن صنع برنامج أقوم بتعيرة ( أن بعد ربع ساعة أغلق الديلفي أو الـ Word مثلاً أو أي برنامج آخر )
وإذا كان لايمكن فهل أستطيع أن أصنعه بحيث يغلق كل البرامج المفتوحة بعد مدّه محدده
وشكراً لكم مقدماً .
فادي
السلام عليكم
احدى الطرق لعمل ذلك هي استخدام 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 ...
أعيدوا لإسمي لونه المفضل
أخي العزيز tmaaa :
شكراً لك على سرعة ردّك
ولكن كيف يمكن إغلاق ملف تنفيذي (exe) معين مثل (Delphi 5.exe).
وشكراً لك مرة ثانية .
السلام عليكم
جرب الكود الاتي و اخبرني كيف النتيجة .
الكود مأخوذ من الرابطين السابقين مع اجراء بعض التعديلات
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 ...
أعيدوا لإسمي لونه المفضل
شكراً لك أخي العزيز tmaaa على هذا الكود .
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…