در اين مقاله طريقه اجرا يا باز کردن نرم افزار هاي خارج از محيط دلفي را با استفاده از تابع API ويندوز ShellExecute را ياد خواهيد گرفت.
چرا بايد برنامه ها را از دلفي اجرا کرد؟
شايد اين سوال براي شما پيش بيايد چرا بايد نرم افزارها را خارج از دلفي اجرا کرد. شما در يکي از موارد ذيل ممکن است نياز به اجراي يک نرم افزار خارج از دلفي داشته باشيد
• برنامه هاي نصب و عزل
• برنامه هاي سيستمي
• برنامه هاي اپليکيشن سرور
• برنامه هاي گزارش گيري
• و ....
موارد بسياري است که ممکن است شما بخواهيد از اين دستور استفاده کنيد که به چندي از آنها اشاره شد.
دستور ShellExecure
اين دستور به ما اجازه ميدهد که برنامه هاي ديگر را اجرا کنيم. نحو اين دستور به شکل ذيل مي باشد.
HINSTANCE ShellExecute(HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
جدول زير پارامترهاي اين دستور را شرح ميدهد.
پارامتر ورودي/خروجي توضيحات
hwnd
ورودي
دستگيره يا هندل پنجره اصلي - براي گزارش خطاها حتما نياز است
lpOperation
ورودي
اشاره گر - اين پارامتر به نوع عمليات اشاره مي کند
lpFile
ورودي
اشاره گر به نام فايل اجرايي شما
lpParameters
ورودي
اشاره گر به پارامترهاي ارسالي به نرم افزار شما - در صورتي که پارامتر نباشد به صورت تهي بماند
lpDirectory
ورودي
دايرکتوري پيش فرض براي اجراي نرم افزار
nShowCmd
ورودي
اشاره گر تنظيم حالت نمايش برنامه بعد از اجرا
د ر صورتي که دستور shellexcute به درستي اجرا نشود يک کد خطا برمي گرداند شما مي توانيد با استفاده از تابع GetLastError خطا رخ داده را متوجه شويد. در صورتي که دستور Shellexecute به درستي اجرا شود کد خطاي بازگشتي بزرگتر از 32 مي باشد . در صورتي که کد خطا بازگشتي کمتر يا برابر با 32 باشد يک خطا رخ داده است. براي دريافت اطلاعات بيشتر در مورد کدهاي خطا اين دستور به MSDN مراجعه کنيد.
در دلفي شما به راحتي با استفاده از دستور SysErrorMessage مي توانيد آخرين خطا را بدست آوريد.نمونه کد زير روش استفاده از اين دستور را نشان داده است.
if ShellExecute(Handle, 'print', PChar('c:\log.txt'), nil, nil, SW_SHOWNORMAL) <= 32 then
ShowMessage(SysErrorMessage(GetLastError));
پارامتر lpOperation
با استفاده از دستور ShellExecute مي توان نرم افزارها و آبجکتهاي مختلف را اجرا کرد . مقادير قابل قبول براي پارامتر دوم اين دستور lpOperation به شرح جدول ذيل مي باشد.
lpOperation مقدار پارامتر
شرح
edit
باز کردن يک سند براي ويرايش در يک ويرايشگر
explore
مرورگر فايلهاي ويندوز براي مرور دايرکتوري خاص ...
find
جستجو به دنبال يک فايل در دايرکتوري خاص...
open
باز کردن يک فايل يا برنامه
print
چاپ يک سند
NULL
اطلاعات بيشتر در پايين ...
در صورتي که مقدار پارامتر lpOperation برابر با null قرار بگيرد براي باز کردن فايل يا برنامه از رجيستري ويندوز و از قسمت تخصيص فايلهاي اجرايي به پسوند فايلها براي اجراي دستور فوق استفاده مي گردد.
پارامتر nShowCmd
اين پارامتر به دستور ShellExecute مي گويد که بعد از اجراي يک برنامه آن را به چه حالتي نمايش بدهد. انواع حالات مختلف در جدول ذيل آمده است.
nShowCmd مقدار پارامتر
شرح
SW_HIDE
مخفي کردن پنجره
SW_MAXIMIZE
بزرگ کردن پنجره
SW_MINIMIZE
به حداقل رساندن پنجره
SW_RESTORE
فعال کردن يک پنجره در صورتي که به حالت حداقل يا حداکثر باشد
SW_SHOW
نمايش پنجره در حالت و موقعيت پيش فرض
SW_SHOWDEFAULT
نمايش پنجره به حالت پيش فرض در برنامه
SW_SHOWMAXIMIZED
فعال و به حداکثر رساندن پنجره
SW_SHOWMINIMIZED
فعال و به حداقل رساندن يک پنجره
SW_SHOWMINNOACTIVE
نمايش يک پنجره در حالت غير فعال و حداقل
SW_SHOWNA
نمايش يک پنجره در وضعيت فعلي
SW_SHOWNOACTIVATE
نمايش و فعال کردن يک پنجره - ويندوز اين پنجره را در حالت پيش فرض خود نمايش مي دهد.
SW_SHOWNORMAL
نمايش و فعال کردن پنجره به حالت عادي
وقتي که شما براي اولين بار يک برنامه را اجرا مي کنيد بايد از مقدار SW_SHOWNORMAL استفاده کنيد.
استفاده از دستور ShellExecute
درقسمت پايين چند نمونه از حالتهاي استفاده از اين دستور آورده شده است. شما مي توانيد اين دستورات را براي کار خود تغيير دهيد. در دلفي براي استفاده از اين دستور بايد دو يونيت Windows و ShellAPI در قسمت Uses قرار گرفته باشد.
اجراي برنامه Demo.exe از دايرکتوري C:\app
ShellExecute(Handle,NIL,PChar('C:\apps\demo.exe'), nil,nil,SW_SHOWNORMAL);
باز کردن فايل log.txt
ShellExecute(Handle,'open',PChar('c:\log.txt'), nil,nil,SW_SHOWNORMAL);
پخش فايل ending.mp3
ShellExecute(Handle,'play',PChar('c:\ending.mp3'), nil,nil,SW_SHOWNORMAL);
چاپ فايل log.txt
ShellExecute(Handle,'print',PChar('c:\log.txt'), nil,nil,SW_SHOWNORMAL);
باز کردن مروگر فايل ويندوز از C:\
ShellExecute(Handle,'explore',PChar('c:\'), nil,nil,SW_SHOWNORMAL);
ساخت يک نامه الکترونيکي جديد به واسطه Outlook Express
Procedure CreateEmail(Const EmailAddr, Subject, Body: String);
var
ConcatEmailStr: String;
Begin
ConcatEmailStr := EmailAddr + '?subject=' + Subject + '&body=' + Body;
ShellExecute(Handle,'open',PChar(ConcatEmailStr), nil, nil, SW_SHOWNORMAL);
end;
براي کسب اطلاعات بيشتر به آدرس ميکروسافت
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shellexecute.asp
مراجعه فرماييد.
نظرات شما عزیزان: