![]() |
|
من المنتدى القديم - تشغيل الملفات - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغات البرمجة الاخرى (http://vb4arb.com/vb/forumdisplay.php?fid=4) +--- قسم : قسم لغة vb6.0 (http://vb4arb.com/vb/forumdisplay.php?fid=18) +---- قسم : قسم مقالات vb6.0 (http://vb4arb.com/vb/forumdisplay.php?fid=29) +---- الموضوع : من المنتدى القديم - تشغيل الملفات (/showthread.php?tid=5585) |
من المنتدى القديم - تشغيل الملفات - RaggiTech - 14-10-12 كاتب الموضوع : أحمد جمال
هي مجموعة من الدروس والمقالات التي كانت موجودة منذ مدة في المنتديات ولكنها ضاعت مع ضياع قاعدة البيانات ، هذه واحدة منها :اعداد : الأخ عاصفة . عنوان الموضوع : تشغيل الملفات . هناك عدد من الطرق التي تمكنك من تشغيل الملفات في بيئة ويندوز باستخدام لغة فيجوال بيسك .. وقد حاولت جمع اهم هذه الطرق في هذا الموضوع لعله يكون مرجعا بهذا الشأن .. وقد فضلت تقسيم الموضوع على اساس نوعية الملفات المراد تشغيلها وسابدء بالملفات التنفيذية يتبعها انواع الملفات الاخرى ... أولا:الملفات التنفيذية أ - باستخدام اوامر فيجوال بيسك ... - الدالة Shell الوظيفة: الدالة shell هي الدالة التي توفرها لغة فيجوال بيسك لتشغيل التطبيقات. الصيغة العامة: كود : Shell(pathname[,windowstyle])صفر في حالة عدم نجاح المهمة و ProcessId (معرف العملية) في حالة النجاح. وسيطات الدالة: PathName : مسار الملف التنفيذي(التطبيق) المراد تشغيله. WindowStyle: طريقة عرض النافذة الاساية للبرنامج.وياخذ هذا الوسيط عدد من الثوابت الموجودة في الجدول التالي ... مثال: كود : Dim Ret&ب - باستخدام اجراءات واجهة برمجة التطبيقات API ... 1- الدالة WinExec الوظيفة: تشبه الدالة السابقة تماما. التصريح للدالة: كود : Declare Function WinExec& Lib "kernel32" (ByVal _كود : Private Sub Command1_Click()الوظيفة: كوظائف الدوال السابقة، تقوم بتشغيل الملفات التنفيذية.. ومن الجدير بالذكر هنا أن نقول أن هذه الدالة هي الأصل في جميع الدوال السابقة حيث أن جميع الدوال تعتمد عليها عند انشاء العملية التصريح للدالة: كود : Declare Function CreateProcess Lib "kernel32" Alias _قمت بعمل مثال تجده على الرابط .. ملاحظة: لم اقم بشرح كل الوسيطات والبنى بل قمت بالتركيز على كيفية تشغيل الملفات التنفيذية .. ثانيا: كيفية تشغيل الملفات الاخرى.. لا يمكن تشغيل الملفات المرتبطة ببرامج معينه من خلال الدالتين Shell وWinExec مباشرة ولكن يجب علينا تمرير البرنامج المشغل قبل تمرير اسم الملف التشغيلي مثلا لنفترض اننا نريد تشغيل الملف النصي Test.txt والموجود على المجلد الجذري فاننا حينها نقوم نقوم بتمرير البرنامج المشغل وليكن في هذه الحالة notepad فاننا نكتب الكود كالتالي.. كود : Shell "Notepad.exe C:Test.txt", 1ولعلك تتسائل الا توجد طريقة للحصول على البرنامج المشغل فالجواب هو نعم .. ولو فكرت سريعا ستجد او فكرة تخطر على بالك هي ستخدام مسجل النظام(الريجيستري) وهذه الطريقة ممتازة وسوف نعتمد على الدالة RegQueryValueEx لقراءة القيمة ورغم ان هذه الطريقة مفيده وفعالة إلا انها تعتبر طويله وتتطلب كتابة اجرائية طويلة للوصول إلى المطلوب.. وهنا يتجلى الحل الآخر من خلال دالة API المسماه FindExecutable ولنتوقف قليلا عند هذه الدالة لنقوم بشرح جوانبها لارتباطها بالموضوع.. الوظيفة: ايجاد البرنامج المشغل لملف معين. التصريح للدالة: كود : Declare Function FindExecutable Lib "shell32.dll" Alias _lpFile : اسم الملف المراد تشغيله. lpDirectory : مسار الملف السابق. lpResult : متغير لتخزين مسار البرنامج المشغل. والآن سنقوم بعمل دالة عند تمرير ملف لها فإنها ستقوم بايجاد البرنامج المشغل... ومن ثم تشغيل الملف.. كود : Private Declare Function FindExecutable Lib "shell32.dll" _ثالثا: تشغيل كافة أنواع الملفات - الدالة ShellExecute الوظيفة: تشغيل كافة انواع الملفات القابلة للتشغيل أوطباعتها حيث انه عندما يكون الملف عبارة عن ملفا مقترنا فإن الدالة تستخرج البرنامج المشغل ثم تقوم بتشغيله. تصريح الدالة: كود : Declare Function ShellExecute Lib "shell32.dll" Alias _hwnd : مقبض النافذة. lpOperation : احدى المعاملين "Print" للطباعة و "Open" للفتح. lpFile : اسم الملف لمراد تطبيق العملية عليه. lpParameters : الوسيطات المراد تمريرها إلى جوار اسم الملف (في حال وجودها). lpDirectory : اسم المجلد الذي يقع عليه الملف .. ويتم تمرير القيمة vbNullString (سلسلة محارف صفرية) في حال تم تمرير المسار كاملا إلى الوسيطة lpFile . nShowCmd :مطابقة للوسيطة windowstyle التابعة للدالة Shell . القيمة اللتي تعيدها الدالة: تكون اكبر من 32 عندما تنجح العملية وعندما يحدث عكس ذلك فأن الدالة تعيد قيما أقل ويمكن تتبع مصدر الخطأ من خلال هذه القيم. امثلة: 1- مثال لتشغيل ملفات تنفيذية.. 'لاحظ انه دائما لاحاجة لتمرير مسار مجلد الويندوز كود : ShellExecute hwnd, "Open", "Calc.exe", _في هذا المثال سأوضح جملة من شيفرات الخطأ التي تصدر عن الدالة في حالة عدم النجاح ومالذي تعنيه كل قيمه.. كود : Private Declare Function ShellExecute Lib "shell32.dll" Alias _ |