واجهة برمجة API (واجهة برمجة التطبيق) ، والتي يجب استخدامها في جميع لغات الكمبيوتر. ما هو واجهة برمجة التطبيقات؟ API هي وسيلة لاستخدام الخدمات التي يوفرها نظام التشغيل. اختبار التصفية والأجهزة عند البرمجة. لذلك ، إذا كان بإمكانك استخدام واجهات برمجة التطبيقات لتنفيذ وظائف أثناء البرمجة ، فنحن نحاول استخدامها.
L كيفية استخدام Windows API في Delphi
في أعمال التطوير اليومية ، غالبًا ما نستخدم وظائف Windows API ، فأين توجد وظائف API؟ يمكننا أن نفهم بهذه الطريقة أن وظيفة API مغلفة في ملف نظام DLL الذي يوفره نظام Windows. على سبيل المثال ، يتم تنفيذ إجراء BEEP الذي نستخدمه غالبًا عن طريق استدعاء MessageBeep في دليل نظام Windwos ؛ Delphithe في كثير من الأحيان dlls المستخدمة: Advapi32.dll ، kernel32.dll ، Mpr.dll ، الإصدار.
فكيف تستخدم دلفي وظيفة API هذه؟ نظرًا لأن وظيفة API موجودة في نظام DLL ، يمكننا الاتصال بوظيفة API تمامًا مثلما ندعو DLL الذي كتبناه. هناك طريقتان لاستدعاء وظائف DLL ، واحدة هي الطريقة الثابتة والآخر هو الطريقة الديناميكية. واجهات برمجة التطبيقات التي تستدعي Windows كلها ثابتة ، لماذا؟ هذا لأن DLLs هذه هي الخدمات الأساسية التي يوفرها نظام التشغيل.
L API والبرمجة اليومية
يقوم Delphi بتغليف معظم وظائف Windows API (بشكل رئيسي في وحدة Windows.PAS) ، والتي ينبغي أن تقال إنها قادرة على إنجاز معظم أعمالنا. ولكن في بعض الأحيان عندما تكون هناك متطلبات خاصة ، فقد يتعين علينا استدعاء بعض واجهات برمجة التطبيقات التي لم يتم تغليفها بواسطة Delphi ، وأحيانًا استدعاء وظائف API التي لم يتم نشرها بواسطة Windows. فكيف تسمي وظائف API هذه؟ كما ذكرنا سابقًا ، ما عليك سوى استخدام مكالمات الطريقة الثابتة. لمزيد من المكالمات التفصيلية ، يرجى الرجوع إلى المعلومات ذات الصلة.
مفتاح استدعاء وظائف واجهة برمجة التطبيقات غير المتبادلة في دلفي هو معرفة المعلمات. يمكنك التحقق من أحدث معلومات MSDN أو ذات الصلة.
L API و VCL
يحتوي MFC من Microsoft على عدد كبير من واجهات برمجة تطبيقات Windows المغطاة ، و VCL ليس استثناء. لا يمكن فصل معظم تنفيذ وظائف VCL عن واجهة برمجة تطبيقات Windows ، إما تسمى مباشرة أو مغلفة ببساطة ثم تسمى. على سبيل المثال ، تنفيذ إعادة طلاء Tcontrol (في وحدة التحكم):
الإجراء tcontrol.repaint ؛
var
DC: HDC ؛
يبدأ
إذا (مرئي أو (CSDesigning في مكونات مكون) وليس (
csnodesignvisible في مكافحة الغدة)) و (الوالدين <> nil) و
Parent.HandlealLocated ثم
إذا كان csopaque في السيطرة
يبدأ
// يتم استدعاء GetDC DLL مباشرة
DC: = getDC (parent.handle) ؛
يحاول
// اتصل مباشرة بـ GDI32.dll's intersectcliprect
intersectcliprect (DC ، يسار ، أعلى ، يسار + عرض ، أعلى +
ارتفاع)؛
// Parent.PaintControls يدعو عدد كبير من واجهات برمجة التطبيقات
Parent.PaintControls (DC ، Self) ؛
أخيراً
// اتصل مباشرة user32.dll's referedc
تم إصداره (Parent.Handle ، DC) ؛
نهاية؛
إنهاء آخر
يبدأ
// يسمى الاثنان التاليان عن طريق التغليف
تبطل
تحديث؛
نهاية؛
نهاية؛
يمكن ملاحظة أن هناك واجهات برمجة التطبيقات في كل مكان في VCL. تهتم بمعلمات واجهة برمجة التطبيقات المزعجة.
ما هو كوم؟ COM (نموذج كائن المكون) ، نموذج كائن مكون ، هو نموذج مكون للبرنامج يعتمد على منصة Windows التي تسمح لكائنات مستقلة مختلفة بالتواصل مع بعضها البعض دون أي قيود على لغة الحوسبة. هذا التعريف مجردة نسبيا. يتم الوصول إلى كائنات COM من خلال واجهة COM. الغرض من كائن COM هو إدراك مشاركة الموارد. .
L VCL و COM
Com هو شيء تمحته Microsoft بشدة من قبل ، لذلك هو في كل مكان في نظام تشغيل Windows. من tcustomadodataset الموروثة ، فإن تعريف tcustomadodataset هو كما يلي:
tcustomadodataset = فئة (tdataset ، iunknown ،
recordseSeventSVT)
خاص
frecordSetObject: _recordset ؛
ffindcursor: _recordset ؛
flookupcursor: _recordset ؛
flockcursor: _recordset ؛
Frowset: Irowset ؛
Faccessor: Iaccessor ؛
FrowsetFind: irowsetfind ؛
fhaccessor: Haccessor ؛
folerecbufsize: عدد صحيح ؛
...
نهاية؛
ADO (كائنات بيانات Microsoft ActiveX) ، مجموعة من كائنات COM التي تصل إلى قاعدة البيانات من خلال مزود Microsoft OLE DB. على سبيل المثال ، سندرس عملية تنفيذ الطريقة الأولى لـ Tadoquery:
tadoquery.first-> tdataset.first-> tdataset.internalfirst-> tcustomadodataset.internalfirst-> recordset15
يرث tadoquery من tcustomadodataset ، و tcustomadodataset وراثي من tdataset ، tdataset.internalfirst يحدد طريقة افتراضية ، و tcustomadodataset.internalfirst. tcustomadodataset.
ليس من الصعب العثور على أن tadoquery. يتم تنفيذها في نهاية المطاف من خلال الواجهة استدعاء كائن com.
L Delphi و Windows Shell
ما هي قذيفة Windows؟ يعد Windows Shell بيئة لتشغيل واجهة Windows ، كما يوفر لنا قابلية التوسع القوية للبرمجة. نستخدم قذائف Windows لبرمجة وظائف معينة ، تسمى امتدادات Shell. على سبيل المثال ، إذا كان جهازك يحتوي على WinRar مثبتًا ، فسترى قائمة WinRar المضغوطة في قائمة النقر بزر الماوس الأيمن في المجلد. يتم تنفيذ هذه الوظائف من خلال امتدادات Windows Shell.
تعتمد Windows Shell ، لذلك يجب تنفيذ جميع ملحقات shell من خلال الواجهة. تعرف Delphi أيضًا العديد من واجهات تمديد Shell ، في وحدة Source/RTL/WIN/SHLOBJ.PAS في دليل تثبيت DELPHI7.
هناك مثال على ListView الافتراضي في دليل Delphi التجريبي ، وهو تحقيق تصفح القرص من خلال امتدادات Windows Shell.
يعد دمج لغة التجميع في الكود ميزة رئيسية لـ Delphi.
لغة التجميع هي لغة كمبيوتر منخفض المستوى نسبيًا ترتبط ارتباطًا وثيقًا بالأجهزة. لذلك ، نحاول عدم استخدامه في البرمجة اليومية ، ولكن في بعض المناسبات الخاصة (مثل متطلبات الأداء العالي ومعالجة الأجهزة المباشرة) ، لا يزال من الممكن أن يلعب دورًا كبيرًا.
النهاية.
(إذا كنت بحاجة إلى إعادة الطباعة ، فيرجى الإشارة إلى المصدر والمؤلف http://haitian.myrice.com)