السلام عليكم
لدي سؤال في عملية إلغاء تشغيل برنامجي إذا كان يعمل
بحيث مثلاً يظهر رسالة بأن "التطبيق لا يعمل أكثر من نسخة و احدة".
فلعلي أجد الحل عندكم إن شاء الله
و السلام عليكم
السلام عليكم
لدي سؤال في عملية إلغاء تشغيل برنامجي إذا كان يعمل
بحيث مثلاً يظهر رسالة بأن "التطبيق لا يعمل أكثر من نسخة و احدة".
فلعلي أجد الحل عندكم إن شاء الله
و السلام عليكم
تم تعديل هذه المشاركة بواسطة asrocks في 31 يناير 2007 في 20:10
السلام عليكم و رحمة الله و بركاته .
إذا كنت قد فهمت طلبك ، فأنت تبحث عن كيفية تشغيل البرنامج مرة واحدة (أي معنى لا يستطيع تشغيل البرنامج مرتين في نفس الوقت على جهاز واحد)
في هذه الحالة يوجد عدة حلول أبسطها
أكيد أن كود البرنامج هو يشبه الكود التالي
إذهب إلى Project ----> View source
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
[code/]
جرب هذا الكود
[code]
program Project1;
uses
Windows, Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
begin
SetLastError(NO_ERROR);
CreateMutex (nil, False, name of your application');
if GetLastError = ERROR_ALREADY_EXISTS
then Exit;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.و إليك البرنامج.
أرجو الدعاء.
أدم الصلاة على النبي محمد ...............فقبولها حتما بدون تردد
أعمالنا بين القبول وردها ............إلا الصلاة على النبي محمد
/1. CreateMutex
unit Unit1;
uses
Windows, Dialogs, Sysutils;
{....}
implementation
{....}
var
mHandle: THandle; // Mutexhandle
initialization
mHandle := CreateMutex(nil, True, 'XYZ');
if GetLastError = ERROR_ALREADY_EXISTS then
begin
ShowMessage('Program is already running!');
halt;
end;
finalization
if mHandle <> 0 then CloseHandle(mHandle)
end.procedure TForm1.FormCreate(Sender: TObject);
var
Sem: THandle;
begin
Sem := CreateSemaphore(nil, 0, 1, 'PROGRAM_NAME');
if ((Sem <> 0) and (GetLastError = ERROR_ALREADY_EXISTS)) then
begin
CloseHandle(Sem);
ShowMessage('This program is already running.');
Halt;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
var
atom: Integer;
CRLF: string;
begin
if GlobalFindAtom('A Text used to be stored in memory') = 0 then
atom := GlobalAddAtom('A Text used to be stored in memory')
else
begin
CRLF := #10 + #13;
ShowMessage('This version may only be run once for every Windows Session.' +
CRLF +
'To run this program again, you need to restart Windows, or better yet:' +
CRLF +
'REGISTER !!');
Close;
end;
end;قطرة الماء تـثـقب الحجر.. لا بالعنف. لكن بتكرار المحاولة
منتديات الفريق العربي للهندسة العكسية 不喜欢的勿入! www.at4re.com
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…