DLL وعناصر تحكم ActiveX من تطبيق دلفي

سمة شعبية من دلفي هو نشر مشروع تطبيق مع الملف القابل للتنفيذ (exe). ومع ذلك ، إذا لم يتم تسجيل عناصر تحكم DLL أو ActiveX في مشروعك على أجهزة المستخدمين ، فسيتم عرض "EOleSysError" استجابة لتشغيل ملف exe. لتجنب ذلك ، استخدم أداة سطر الأوامر regsvr32.exe.

RegSvr32.exe القيادة

يدويا باستخدام regsvr32.exe (ويندوز. بدء - تشغيل) تسجيل وإلغاء تسجيل DLL وعناصر تحكم ActiveX للتسجيل الذاتي على نظام. يرشد Regsvr32.exe النظام لمحاولة تحميل المكون واستدعاء وظيفة DLLSelfRegister الخاصة به. إذا نجحت هذه المحاولة ، يعرض Regsvr32.exe مربع حوار يشير إلى النجاح.

يحتوي RegSvr32.exe على خيارات سطر الأوامر التالية:

Regsvr32 [/ u] [/ s] [/ n] [/ i [: cmdline]] dllname. / s - صامت ؛ عرض أي صناديق الرسائل. / u - إلغاء تسجيل الخادم. / i - استدعاء DllInstall تمريره اختياري [cmdline] ؛ عند استخدامها مع / u المكالمات دلل إلغاء التثبيت. / n - لا تستدعي DllRegisterServer؛ يجب استخدام هذا الخيار مع / i 

مكالمة RegSvr32.exe داخل كود دلفي

للاتصال بأداة regsvr32 ضمن رمز Delphi ، استخدم وظيفة "RegisterOCX" لتنفيذ ملف وانتظر انتهاء التنفيذ.

instagram viewer

هذه هي الطريقة التي يمكن أن يظهر بها الإجراء "RegisterOCX":

إجراء RegisterOCX اكتب
TRegFunc = وظيفة: HResult ؛ stdcall; فار
ARegFunc: TRegFunc؛ aHandle: THandle ؛ ocxPath: خيط; ابدأمحاولة
ocxPath: = ExtractFilePath (التطبيق. ExeName) + 'Flash.ocx' ؛ aHandle: = LoadLibrary (PChar (ocxPath)) ؛ إذا aHandle 0 ثمابدأ
ARegFunc: = GetProcAddress (aHandle، 'DllRegisterServer')؛ إذا معين (ARegFunc) ثمابدأ
ExecAndWait ('regsvr32'، '/ s' + ocxPath)؛ النهاية; مكتبة مجانية (aHandle) ؛ النهاية؛ إلا
ShowMessage (التنسيق ('غير قادر على التسجيل٪ s' ، [ocxPath])) ؛ النهاية; النهاية;

لاحظ ال ocxPath نقاط متغير إلى "Flash.ocx" Macromedia OCX.

لتكون قادرًا على تسجيل نفسه ، يجب على OCX تطبيق وظيفة DllRegisterServer لإنشاء إدخالات التسجيل لجميع الفئات داخل عنصر التحكم. لا تقلق بشأن وظيفة DllRegisterServer ، فقط تأكد من وجودها. من أجل البساطة ، يُفترض أن OCX يقع في نفس المجلد مثل مكان التطبيق.

يستدعي السطر ExecAndWait في التعليمة البرمجية أعلاه أداة regsvr32 بتمرير مفتاح التبديل "/ s" مع المسار الكامل إلى OCX. الوظيفة هي ExecAndWait.

الاستخدامات shellapi ؛... وظيفة ExecAndWait (مقدار ثابت ExecuteFile ، ParamString: خيط): منطقية. فار
SEInfo: TShellExecuteInfo؛ ExitCode: DWORD؛ ابدأ
FillChar (SEInfo ، SizeOf (SEInfo) ، 0) ؛ SEInfo.cbSize: = SizeOf (TShellExecuteInfo) ؛ مع SEInfo هل تبدأ
fMask: = SEE_MASK_NOCLOSEPROCESS؛ Wnd: = التطبيق. مقبض؛ lpFile: = PChar (ExecuteFile) ؛ lpParameters: = PChar (ParamString) ؛ nShow: = SW_HIDE؛ البريدالثاني إذا ShellExecuteEx (SEInfo) ثمابدأكرر
تطبيق. ProcessMessages GetExitCodeProcess (SEInfo.hProcess ، ExitCode) ؛ حتى (ExitCode STILL_ACTIVE) أو التطبيق. تم انهائه النتيجة: = صحيح ؛ النهايةآخر النتيجة: = خطأ ؛ النهاية;

تستخدم الدالة ExecAndWait استدعاء API ShellExecuteEx لتنفيذ ملف على نظام. لمزيد من الأمثلة عن تنفيذ أي ملف من دلفي ، تحقق من كيفية تنفيذ وتشغيل التطبيقات والملفات من كود دلفي.

Flash.ocx داخل دلفي إكس

إذا كانت هناك حاجة لتسجيل عنصر تحكم ActiveX على جهاز المستخدم ، فتأكد من أن المستخدم لديه OCX يتطلب البرنامج عن طريق وضع ActiveX بأكمله (أو DLL) داخل exe للتطبيق ك الموارد. عندما يتم تخزين OCX داخل إكس ، فمن السهل استخراج ، حفظ إلى القرص ، واستدعاء الإجراء RegisterOCX.