![]() |
|
العمل بالدالة ShellExecute - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : دروس دلفي للمبتدئين (https://delphi4arab.net/forum/forumdisplay.php?fid=13) +--- الموضوع : العمل بالدالة ShellExecute (/showthread.php?tid=2173) |
العمل بالدالة ShellExecute - Lam.Abdeldjalil - 10-07-2010 السلام عليكم
للدالة إستعمالات كثيرة نذكر منها : ( المسار يكتب إذا كان البرنامج المراد تفيده ليس في ملفات النظام أو نفس مجلد تطبيقنا ) لا تنسى إضافة : uses shellapi * تشغيل برنامج : كود : ShellExecute(Handle, 'open', 'notepad.exe', nil, nil, SW_SHOWNORMAL) ;كود : ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL) ;* فتح الملفات : كود : ShellExecute(Handle,'open', 'Textfile.txt',nil, nil, SW_SHOWNORMAL) ;كود : ShellExecute(Handle,'open', 'c:\windows\notepad.exe','Textfile.txt', nil, SW_SHOWNORMAL) ;*فتح المشتكف على مسار محدد : كود : ShellExecute(Handle,'open', 'c:\', nil, nil, SW_SHOWNORMAL) ;كود : ShellExecute(Handle,'open', 'explorer.exe', 'c:\', nil, SW_SHOWNORMAL) ;كود : ShellExecute(handle, 'explore', 'c:\', nil, nil, SW_SHOWNORMAL);* للطباعة ( طباعة ملف مباشرة دون فتحه ) ' الطباعة تكون على الطابعة الإفتراضية ' كود : ShellExecute(Handle, 'print', PChar('textfile.txt'), nil, nil, SW_SHOW);* فتح متصفح الويب الإفتراضي على الموقع المعطى كود : ShellExecute(Handle, 'open', 'http://www.delphi4arab.net/forum/',nil,nil, SW_SHOWNORMAL) ;* لبعث إيميل ( فتح برنامج الإيميلات الإفتراضي مع ملئه بالقيم المعطاة ) كود : var mailsubject, mailtext, mail : string;
begin
mailsubject := 'هذا هو موضوع الإيميل Subject ';
mailtext := 'هذا هو نص الإيميل';
mail := 'mailto:Contact@delphi4arab.net?subject=' +
mailsubject + '&body=' + mailtext ;
ShellExecute(Handle,'open',
PChar(mail), nil, nil, SW_SHOWNORMAL) ;* تشغيل برنامج والإنتظار حتى إغلاقه ( مثال عند إغلاقه يظهر لنا مساج ) مثال عن الآلة الحسبة كود : unit Unit1;
interface
uses
Windows, Messages, Variants, Classes, Graphics, Controls, Forms,
Dialogs,shellapi, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure RunAndWaitShell(Executable, Parameter: STRING; ShowParameter: INTEGER);
var
Info: TShellExecuteInfo;
pInfo: PShellExecuteInfo;
exitCode: DWord;
begin
{Pointer to Info}
pInfo := @Info;
{Fill info}
with Info do
begin
cbSize := SizeOf(Info);
fMask := SEE_MASK_NOCLOSEPROCESS;
wnd := application.Handle;
lpVerb := NIL;
lpFile := PChar(Executable);
{Parametros al ejecutable}
{Executable parameters}
lpParameters := PChar(Parameter + #0);
lpDirectory := NIL;
nShow := ShowParameter;
hInstApp := 0;
end;
{Execute}
ShellExecuteEx(pInfo);
{Wait to finish}
repeat
exitCode := WaitForSingleObject(Info.hProcess, 500);
Application.ProcessMessages;
until (exitCode <> WAIT_TIMEOUT);
showmessage('تم إغلاق البرنامج');
form1.Enabled :=true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Enabled :=false;
RunAndWaitShell('calc','',1);
end;
end.العمل بالدالة ShellExecute - Lam.Abdeldjalil - 11-07-2010 السلام عليكم *تنفيذ أوامر الدوس أمثلة كود : ShellExecute(Handle, 'open', PChar('command.com'), PChar('/c copy file1.txt file2.txt'), nil, SW_SHOW);كود : * ShellExecute(Handle, 'open', PChar('command.com'), PChar('/k dir'), nil, SW_SHOW);* *فتح المشتكف على مسار مع إختيار الملف المحدد ( خاصية الإختيار لا تعمل إذا كان المسار مفتوحا ) : كود : ShellExecute(Handle,'OPEN',PChar('explorer.exe'),PChar('/select, "' + selectedFileName + '"'),nil,SW_NORMAL)العمل بالدالة ShellExecute - TF6M - 12-07-2010 Lam.Abdeldjalil كتب :السلام عليكم و عليكم السلام و رحمة الله و بركاته 1- يمكن إختصار الأمر في : PHP كود : Uses2- نقوم بتنفيذ أمر تحميل البرنامج 1.exe , بخاصية عرض SW_HIDE , لهذا توجب علينا إنهاء Process الـ CMD بالأمر Exit . 3- للفصل بين أوامر الـ cmd , يكفي وضع && بين كل أمر و آخر . بالتوفيق ,, العمل بالدالة ShellExecute - kachwahed - 13-07-2010 [COLOR="black"]وعليكم السلام ورحمة الله موضوع ثري وشامل ![]() يمكن استخدام WinExec المعرفة في Windows.pas حالة التعامل مع الملفات التنفيذية، ينظر أيضا: http://www.delphi4arab.net/forum/showthread.php?tid=2657 http://www.delphi4arab.net/forum/showthread.php?tid=600 إذا كان البرنامج لا يستخدم من ShellAPI إلا ShellExecute أفضل استيراد تعريفها بمثل هذا: PHP كود : function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,استدعي ShellExecuteW إذا وجدت حروف اللغة العربية (و Unicode عموما).[/COLOR] العمل بالدالة ShellExecute - Lam.Abdeldjalil - 13-07-2010 السلام عليكم بارك الله فيكم على إثراء الموضوع وهذا مثال عن إستخدامات الدالة : http://www.delphi4arab.net/forum/showthread.php?p=18842#post18842 و السلام عليكم العمل بالدالة ShellExecute - Lam.Abdeldjalil - 16-07-2010 السلام عليكم لإيقاف تشغيل الجهاز ( مع الإجبار لا مجال للتراجع ) ' 30 ثانية لإيقاف التشغيل' كود : ShellExecute(Handle, 'open', PChar('shutdown.exe'), PChar('-s'), nil, sw_show);لإعادة تشغيل الجهاز ( مع الإجبار لا مجال للتراجع ) ' 30 ثانية لإعادة التشغيل' كود : ShellExecute(Handle, 'open', PChar('shutdown.exe'), PChar('-r'), nil, sw_show);لتسجيل الخروج كود : ShellExecute(Handle, 'open', PChar('shutdown.exe'), PChar('-l'), nil, sw_show);و السلام عليكم العمل بالدالة ShellExecute - kachwahed - 15-01-2011 تعيد الدالة قيمة أكبر من 32 إذا نجحت في تشغيل الملف وتعيد قيمة خطأ يمكن فحصها لتحديد الخلل بأكثر دقة، مثال: PHP كود : procedure ExploreTo(handle:HWND ; page:PChar);WinExec تعيد قيمة أكبر من 31 عند النجاح، مثال: PHP كود : function Exec(Cmd: string; ShowConsole: Boolean): Boolean; |