Lam.Abdeldjalil
10-07-2010, 11:23 PM
السلام عليكم
للدالة إستعمالات كثيرة نذكر منها :
( المسار يكتب إذا كان البرنامج المراد تفيده ليس في ملفات النظام أو نفس مجلد تطبيقنا )
لا تنسى إضافة : 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.com/forum/',nil,nil, SW_SHOWNORMAL) ;
* لبعث إيميل ( فتح برنامج الإيميلات الإفتراضي مع ملئه بالقيم المعطاة )
var mailsubject, mailtext, mail : string;
begin
mailsubject := 'هذا هو موضوع الإيميل Subject ';
mailtext := 'هذا هو نص الإيميل';
mail := 'mailto:Contact@delphi4arab.com?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.
للدالة إستعمالات كثيرة نذكر منها :
( المسار يكتب إذا كان البرنامج المراد تفيده ليس في ملفات النظام أو نفس مجلد تطبيقنا )
لا تنسى إضافة : 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.com/forum/',nil,nil, SW_SHOWNORMAL) ;
* لبعث إيميل ( فتح برنامج الإيميلات الإفتراضي مع ملئه بالقيم المعطاة )
var mailsubject, mailtext, mail : string;
begin
mailsubject := 'هذا هو موضوع الإيميل Subject ';
mailtext := 'هذا هو نص الإيميل';
mail := 'mailto:Contact@delphi4arab.com?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.