كيف يمكنني تتبع عندما يتم تنشيط النافذة و deactivadet؟
-
29-09-2019 - |
سؤال
أقوم بعمل شريط مهام وأحتاج إلى معرفة متى يتم تغيير النافذة النشطة. لا أريد استخدام مؤقت. أفكر في أنه ربما توجد رسالة WNDProc يمكنني اعتراضها.
أنا أستخدم C#
المحلول
يتطلب ذلك خطافًا تم تعيينه بواسطة SetWindowshookex ، WH_SHELL. يحصل رد الاتصال على إشعارات مثل HShell_WindowActivivated و HShell_Windowcreated حتى تتمكن من معرفة ما يحدث مع النوافذ ذات المستوى الأعلى. تحقق من مقالة SDK لـ "Shellproc"للحصول على القائمة الكاملة للإشعارات التي يمكنك الحصول عليها. كلها ذات صلة بتنفيذ شريط المهام الخاص بك.
وكان هذا هو الخبر السار. الأخبار السيئة هي أن Wh_shell هو خطاف عالمي. يتطلب DLL التي يمكن حقنها في عملية أخرى. المشكلة هي أنه لا يمكنك كتابة هذا DLL في التعليمات البرمجية المدارة. حقن الكود المدارة في عملية غير مُدارة غير ممكن.
بالعودة إلى الأخبار السارة مرة أخرى ، قام شخص ما بحل هذه المشكلة وأنشأ DLL غير مُدارة قابلاً للحقن ويمكن أن يتداخل مع التعليمات البرمجية المدارة. المشروع هنا. لا فكرة عن مدى جودتها. أظن أنه قد لا يكون دليل UAC تمامًا.