تنفيذ البرامج الخارجية
#1
السلام عليكم

SysUtils.ExecuteProcess :

أبسط طريقة إذا كنت لا تحتاج أي رقابة إستعمل ببساطة :
كود :
function ExecuteProcess( const Path: AnsiString; const ComLine: AnsiString; Flags: TExecuteFlags = [] ):Integer;
ExecuteProcess : تقوم بتنفيذ البرنامج في المسار Path بالـ ComLine ، و تنتظر حتى يغلق البرنامج المنفذ .
مثال:
كود :
SysUtils.ExecuteProcess(UTF8ToSys('calc'), '', []);
Tprocess :

يمكن إستعمال Tprocess لتنفيذ برامج خارجية : متعدد المنصات ، إمكانية إلإنتظار حتى الإنتهاء أو ينفذ بالتوازي مع برنامجك ، مع إمكانية الكتابة في stdin و القراءة من stdout .

أمثلة:
*1
كود :
uses ..,Process;
كود :
var AProcess: TProcess; begin AProcess := TProcess.Create(nil); try AProcess.CommandLine := 'calc'; AProcess.Options := AProcess.Options + [poWaitOnExit]; AProcess.Execute; finally AProcess.Free; end;
كود :
AProcess.Options := AProcess.Options + [poWaitOnExit];
هذا السطر للإنتظار حتى غلق البرنامج إحذفه إذا أردته أن بعمل بالتوازي مع برنامجك

- في البرامج المتعددة المنصات يمكن تغيير commandline حسب نظام التشغيل
كود :
{$IFDEF WIN32} AProcess.CommandLine := 'calc.exe'; //Windows Calc {$ENDIF} {$IFDEF LINUX} AProcess.CommandLine := 'kcalc'; //KDE Calc {$ENDIF} AProcess.Execute;
*2 في بعض الحالات نحتاج إلى المخرجات ، يمكن إلتقاطها كالآتي
كود :
var AProcess: TProcess; AStringList: TStringList; begin AProcess := TProcess.Create(nil); AStringList := TStringList.Create; try AProcess.CommandLine := 'yourcmd'; AProcess.Options := AProcess.Options + [poWaitOnExit]; AProcess.Execute; AStringList.LoadFromStream(AProcess.Output); AStringList.SaveToFile('output.txt'); finally AStringList.Free; AProcess.Free; end;
*3 في حالات أخرى (نادرة) تحتاج للإلقتط المخرجات حين خروجها و ليس حتي أن ينتهي التنفيذ ( تجده بالتفصيل في الرابط أسفل )

فتح الملفات ببرامجها الإفتراضية :

لست بحاجة لفتح برنامج Acrobat مع تمرير إسم الملف لفتح ملف pdf ( كمثال) بل توجد طريقة أبسط بإستعمال الإجراء OpenDocument

مثال :
كود :
uses LCLIntf; ... OpenDocument('manual.pdf');
فتح صفحة ويب على المتصفح الإفتراضي :
كود :
uses LCLIntf; ... OpenURL('http://www.delphi4arab.net/forum/');
المصدر
كود :
wiki.lazarus.freepascal.org/Executing_External_Programs
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم