يتم تمثيل واجهة برمجة التطبيقات لأنظمة تشغيل Windows من خلال مجموعة من الوظائف. عندما يتم استدعاؤها ، يمكن إنشاء كائنات مختلفة (ملفات ، عمليات ، خيوط ، كائنات التزامن ، إلخ). لتوفير وصول موحد ومجرّد بشكل كافٍ إلى هذه الكائنات ، يتم تحديدها باستخدام الواصفات - القيم الرقمية "غير الشخصية".
ضروري
- - مترجم من لغة برمجة تسمح باستخدام Windows API ؛
- - ربما Windows Platform SDK.
تعليمات
الخطوة 1
احصل على مقابض النوافذ. هناك طرق عديدة للقيام بذلك. الطريقة الدقيقة تعتمد على الهدف النهائي.
استخدم CreateWindow أو CreateWindowEx APIs لإنشاء نافذة. يعيدون التعامل مع النجاح و NULL على الفشل.
ابحث عن الإطارات ذات المستوى الأعلى والنوافذ التابعة بمعلمات مختلفة باستخدام الدالتين FindWindow و FindWindowEx ، على التوالي. عند البحث الناجح ، سيتم الحصول على مقبض النافذة.
تعداد الإطارات باستخدام وظائف EnumWindows و EnumChildWindows و EnumThreadWindows. سيتم تمرير مقابض النوافذ التي تم العثور عليها كمعامل لوظيفة رد الاتصال.
ابحث عن مقبض النافذة الموجود في موضع محدد على الشاشة. قم باستدعاء إحدى الوظائف: WindowFromPoint أو ChildWindowFromPoint أو ChildWindowFromPointEx.
الخطوة 2
احصل على مقابض العملية. قم بإنشاء عملية جديدة عن طريق استدعاء دالات CreateProcess أو CreateProcessAsUser أو CreateProcessWithTokenW أو CreateProcessWithLogonW API. يقومون جميعًا بإرجاع مؤشر إلى العملية الجديدة في حقل hProcess الخاص بهيكل PROCESS_INFORMATION ، والذي يجب تمرير المؤشر إليه باعتباره المعلمة الأخيرة.
ابحث عن مؤشر العملية من خلال معرفها المعروف. استخدم استدعاء OpenProcess. يمكن الحصول على معرّفات جميع العمليات الجارية ، على سبيل المثال ، باستخدام وظائف CreateToolhelp32Snapshot و Process32First و Process32Next لمكتبة تعليمات الأداة.
استرجع المقبض الزائف للعملية الحالية باستخدام دالة GetCurrentProcess.
الخطوه 3
احصل على واصفات المواضيع. تعمل الدالتان CreateThread و CreateRemoteThread على إنشاء مؤشرات ترابط في العملية الخاصة بهم وعملية شخص آخر ، على التوالي ، لإرجاع مقابضهم. يمكنك فتح مؤشر ترابط موجود باستخدام معرفه والحصول على المقبض المقابل باستخدام وظيفة OpenThread. يتم إرجاع المقبض الزائف للتدفق الحالي عند استدعاء GetCurrentThread.
الخطوة 4
يمكن الحصول على واصفات الملفات والدلائل والأقراص المادية ووحدات تخزين القرص ووحدات التحكم وموارد الاتصال (منافذ الإدخال / الإخراج) وفتحات البريد والممرات المسماة عن طريق استدعاء دالة واحدة ، CreateFile.
الخطوة الخامسة
يتم إرجاع واصفات كائن تعيين ملف إلى ذاكرة بواسطة استدعاءات إلى CreateFileMapping و OpenFileMapping.
الخطوة 6
إنشاء وظائف CreateMutex و CreateSemaphore و CreateEvent ، وتفتح وظائف OpenMutex و OpenSemaphore و OpenEvent كائنات المزامنة الحالية (كائنات المزامنة والإشارات والأحداث). كلهم يعيدون الواصفات.
الخطوة 7
تتم معالجة كافة كائنات GDI (مثل سياقات الجهاز والخطوط والفرش وأقلام الرصاص والصور النقطية المعتمدة على الأجهزة والمستقلة وأقسام DIB وما إلى ذلك) من خلال واصفاتها. تتعدد وظائف إنشاء كائنات GDI ويجب الرجوع إليها في قسم MSDN للحصول على معلومات عنها.
الخطوة 8
لا يمكن استخدام الواصف الذي تم الحصول عليه في إحدى العمليات ، كقاعدة عامة ، في عملية أخرى. ومع ذلك ، في بعض الحالات ، من الممكن الحصول على واصف مكرر يتوافق مع الكائن الأساسي. قم باستدعاء DuplicateHandle API لتكرار المقبض. يمكن استخدام هذا ، على سبيل المثال ، لمشاركة كائنات أو قنوات مزامنة غير مسماة بين عمليات متعددة.