الحصول على تطبيق Delphi لإغلاق مربع حوار ظهر من سائق

StackOverflow https://stackoverflow.com/questions/4319697

سؤال

لدي تطبيق Delphi يحاول فتح كاميرا ويب. تحت Windows 7 يفشل من حين لآخر (هذه قصة أخرى/سؤال/Thread) لكن برنامج تشغيل كاميرا الويب ينبثق أيضًا في مربع حوار بعنوان "مصدر الفيديو" يدعوني لتحديد واحد. إذا حاولت فتح السائق مرارًا وتكرارًا في حلقة وأغلق مربع الحوار يدويًا في كل مرة يظهر فيها ، يمكنني الذهاب. لذلك أود إغلاق الحوار من تطبيقي. لا يجد FindWindow (لا شيء ، "مصدر الفيديو"). إذا نظرت مع Process Explorer ، يتم عرض مربع الحوار على أنه ينتمي إلى تطبيقي. إذا أجبرت على إغلاقه من PE ، فإنه يغلق تطبيقي!. كيف أغلق هذا الحوار؟ لديّ شك في أن تطبيقي معلق أثناء فتح مربع الحوار هذا ، مما يجعل من الصعب تنفيذ أي رمز لإغلاق مربع الحوار.

هل كانت مفيدة؟

المحلول

إذا توقف مؤشر ترابط التطبيق الرئيسي الخاص بك في انتظار إدخال المستخدم بسبب مربع الحوار المنبثق هذا ، فإن الحل الوحيد هو وجود مؤشر ترابط آخر يحاول بانتظام تحديد هذا المنبثقة. عندما يجدها ، استخدم postmessage لاستخدام WM_Close أو مشابه للمقبض المنبثق. قد تضطر إلى إرسال رسائل mousedown/mouseup إلى الزر الموجود على المنبثقة.

علاوة على ذلك ، أود أن أكتب تطبيق تصحيح صغير يستخدم نقطة Windows Api Windowfrompoint لمعرفة نافذة المنبثقة ، أي. ليس فقط تعليق مرئي ولكنه أيضًا فئة. يمكنك أيضًا استخدام برنامج التصحيح هذا للحصول على FindWindow للعمل بشكل صحيح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top