19-10-2012, 07:09 PM
السلام عليكم
SysUtils.ExecuteProcess :
أبسط طريقة إذا كنت لا تحتاج أي رقابة إستعمل ببساطة :
ExecuteProcess : تقوم بتنفيذ البرنامج في المسار Path بالـ ComLine ، و تنتظر حتى يغلق البرنامج المنفذ .
مثال:
Tprocess :
يمكن إستعمال Tprocess لتنفيذ برامج خارجية : متعدد المنصات ، إمكانية إلإنتظار حتى الإنتهاء أو ينفذ بالتوازي مع برنامجك ، مع إمكانية الكتابة في stdin و القراءة من stdout .
أمثلة:
*1
هذا السطر للإنتظار حتى غلق البرنامج إحذفه إذا أردته أن بعمل بالتوازي مع برنامجك
- في البرامج المتعددة المنصات يمكن تغيير commandline حسب نظام التشغيل
*2 في بعض الحالات نحتاج إلى المخرجات ، يمكن إلتقاطها كالآتي
*3 في حالات أخرى (نادرة) تحتاج للإلقتط المخرجات حين خروجها و ليس حتي أن ينتهي التنفيذ ( تجده بالتفصيل في الرابط أسفل )
فتح الملفات ببرامجها الإفتراضية :
لست بحاجة لفتح برنامج Acrobat مع تمرير إسم الملف لفتح ملف pdf ( كمثال) بل توجد طريقة أبسط بإستعمال الإجراء OpenDocument
مثال :
فتح صفحة ويب على المتصفح الإفتراضي :
المصدر
SysUtils.ExecuteProcess :
أبسط طريقة إذا كنت لا تحتاج أي رقابة إستعمل ببساطة :
كود :
function ExecuteProcess(
const Path: AnsiString;
const ComLine: AnsiString;
Flags: TExecuteFlags = []
):Integer;مثال:
كود :
SysUtils.ExecuteProcess(UTF8ToSys('calc'), '', []);يمكن إستعمال 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;كود :
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;فتح الملفات ببرامجها الإفتراضية :
لست بحاجة لفتح برنامج Acrobat مع تمرير إسم الملف لفتح ملف pdf ( كمثال) بل توجد طريقة أبسط بإستعمال الإجراء OpenDocument
مثال :
كود :
uses LCLIntf;
...
OpenDocument('manual.pdf');كود :
uses LCLIntf;
...
OpenURL('http://www.delphi4arab.net/forum/');كود :
wiki.lazarus.freepascal.org/Executing_External_Programs
