تعطيل ADBLOCK

يمنع ADBlock بعض المحتوى على الموقع

ADBlock errore

وبذلك نافذة على الجبهة في C # باستخدام Win32 API

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

سؤال

وأنا أكتب تطبيق يحتاج إلى جلب نافذة التطبيق الخارجي إلى المقدمة، وليس بالضرورة سرقة التركيز (هناك وضع يمكن للمستخدم تبديل لسرقة / لا تسرق التركيز).

ما هي أفضل طريقة للذهاب نحو هذا باستخدام API Win32 و؟ لقد حاولت SetForeground () ولكنه يسرق دائما التركيز ولا يعمل كونسيستينلي.

ما هي أفضل طريقة للذهاب نحو ذلك؟ أي أفكار؟

المحلول

ويفترض SetForegroundWindow لسرقة التركيز وهناك بعض الحالات التي سوف تفشل.

<اقتباس فقرة>   

وظيفة SetForegroundWindow يضع مؤشر الترابط الذي أنشأ الإطار المحدد في المقدمة وينشط النافذة. يتم توجيه مدخلات لوحة المفاتيح إلى إطار

وحاول الاستيلاء على التركيز مع SetCapture قبل إجراء المكالمة. ننظر أيضا إلى طرق مختلفة ليصل بذلك نافذة على الجبهة: SetForeGroundWindow، SetActiveWindow، حتى محاكاة النقر بالماوس يمكن القيام بذلك

نصائح أخرى

<اقتباس فقرة>   

ما هو الفرق بين SetForeGroundWindow، SetActiveWindow، وBringWindowToTop؟ ويبدو كما لو أنهم جميعا أن تفعل الشيء نفسه.

ووفقا لMSDN، SetForeGroundWindow وتفعيل النافذة وتركيز لوحة المفاتيح مباشرة إلى ذلك. هذه محاولات للعمل حتى عندما عملية الخاص بك هو في الخلفية. SetActiveWindow يفعل الشيء نفسه كما SetForeGroundWindow، لكنها لا تفعل شيئا إذا كان التطبيق ليس تطبيق frontmost. وأخيرا، BringWindowToTop يجلب سوى نافذة إلى أعلى، ولا يغير تركيز لوحة المفاتيح.

ويمكنك أن تجرب وظيفة BringWindowToTop ليست سرقة التركيز. أنا لم تستخدم، ولكن يبدو أن ما كنت أبحث عنه.

هل حاولت استخدام SetWindowPos. هذه هي وظيفة الكنسي لنقل، تغيير حجم ووضع الترتيب التصاعدي في ويندوز. هناك علم SWP_NOACTIVATE يمكنك استخدامها. انظروا http://msdn.microsoft.com/en -US / مكتبة / ms633545 (VS.85) .aspx اتصال . لم أحاول هذا على نافذة تنتمي إلى عملية أخرى، ولكن ربما هو يستحق المحاولة.

وSetWindowPos + SWP_NOACTIVATE لا وظيفة.

هل يمكن استخدام FindWindow للحصول على HWND من النافذة، ثم استخدم وظيفة BringWindowToTop وجدت في Win32 API.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow