سؤال

أحتاج إلى التأكد من ذلك explorer.exe يعمل كقشرة النظام. ما أحتاج إلى القيام به هو:

  • الكتابة فوق Shell الحالي (Winlogon\Shell) مع explorer.exe
  • يركض explorer.exe (كما شل)
  • الكتابة فوق قذيفة الحالية مع قذيفة الخاصة بي.

بين الخطوتين الأخيرتين هو سباق:

  • إذا قمت بالكتابة فوق Shell الحالية باستخدام قذيفة خاصة بي بسرعة كبيرة، فستفتح نافذة "مستنداتي" فقط.

إذن السؤال هو، هل هناك أي أحداث / mutexes / callbacks يمكنني الاتصال بالتأكد من تهيئة المستكشف كقشرة؟

أفضل ما تمكنت من فعله هو انتظار نافذة الدرج مثل:

while(!FindWindow("Shell_TrayWnd", NULL)) { 
     sleep(250);
}

التي تبدو قذرة كيندا، هل هناك طريقة أفضل؟

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

المحلول

لن أحاول حتى القيام بذلك. يجب عليك إنشاء سطح مكتب Winsta0 جديد (Win32 API CreateDesktopktop)، ابدأ تشغيل تطبيق كشك الخاص بك على سطح المكتب والتحول إليه. بهذه الطريقة تترك سطح المكتب الافتراضي وحدها، تشغيل المستكشف، ويمكن أن تعود إليها إذا كنت بحاجة إليها. كان لدينا الكثير من النجاح في القيام بذلك في مشروع كشك بنينا.

نصائح أخرى

سيكون هناك طريقة أفضل (كما هو موثق فعليا) إنشاء نافذة من المستوى الأعلى وانتظر بث "TaskBarCreated". بهذه الطريقة أيضا تتخلص من مكالمة النوم ().

تم توثيق البث هنا.

لم تفسر لماذا تحتاج إلى 3 خطوات، "برنامج كشك" ليس شرحا.

هل حاولت ببساطة إعداد Shell في System.ini مثل LitEstep وغيرها من برامج استبدال سطح المكتب؟ إذا كان عليك التبديل ذهابا وإيابا ثم ضع في اعتبارك مجلة قذيفة مثل شيلون أو Litespawn. التي كتبت لهذه المهمة.

لماذا لا تشاهد العمليات التي تعمل؟ قبل الخطوة الأولى، لا ينبغي إدراج Explorer.exe لأنه ليس الشل الافتراضي. الخطوة 2 تبدأ في ذلك ومشاهدة العملية، والتي تتوفر مرة أخرى.

لست متأكدا مما إذا كنت على .NET Framework أم لا، ولكن إذا كنت الأحداث الموجودة على فئات StartInfo يجب أن تكون كافية لاحتياجاتك.

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