أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

بدء تشغيل كيفية فرض شاشة توقف لإغلاق مرة واحدة في Windows NT و Windows 2000 و Windows Server 2003

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

140723
الموجز
أحياناً تحتاج تطبيقات لإنهاء شاشة توقف التي قيد التشغيل بالفعل. في Microsoft Windows 95, شاشة توقف قد يتم إنهاء بسهولة من قبل النشر رسالة WM_CLOSE في إطار التوقف الشاشة النشطة حالياً كما هو موضح في هذا المثال:
postMessage (GetActiveWindow() ، WM_CLOSE, 0, 0 L);
يقدم Microsoft Windows NT على الرغم من ذلك، مفهوم أسطح منفصلة بحيث يمكن تشغيل تطبيقات على أحد كما يمكن تشغيل شاشة التوقف على آخر. يؤدي إنهاء التوقف الشاشة ضمن Windows NT و Windows 2000 و Windows Server 2003 قليلاً أكثر صعوبة.
معلومات أخرى
يختلف عملية الحصول على مؤشر إلى إطار التوقف الشاشة النشطة حالياً مع أنظمة التشغيل التي يتم إصدار أحدث من Microsoft Windows 95. في Microsoft Windows NT على نظام التشغيل Microsoft Windows 2000 و على نظام التشغيل Windows Server 2003, قد يتم تشغيل شاشة التوقف على سطح إما المكتب الافتراضي أو على سطح مكتب منفصل, اعتماداً على إعداد في خصائص العرض:
  • إذا قمت بتحديد خانة الاختيار عند الاستئناف، حماية كلمة المرور في علامة التبويب شاشة التوقف من مربع الحوار خصائص العرض تشغيل شاشة التوقف على سطح المكتب الخاص به.
  • إذا قمت بإلغاء تحديد خانة الاختيار الموضحة في نقطة السابقة تشغيل شاشة التوقف على سطح المكتب الافتراضي.
لا يمكنك استخدام الدالة GetForegroundWindow() أو FindWindow الدالة لتحديد ما إذا كانت شاشة التوقف النشطة حالياً:
  • ترجع الدالة GetForegroundWindow() NULL بسبب تشغيل شاشة التوقف على سطح مكتب مختلفة من سطح المكتب يعمل على تطبيق الاستدعاء.
  • لا تعمل الدالة FindWindow ("WindowsScreenSaverClass" ، NULL) إما.
لذلك تنصح Microsoft التالية:
  • يحدد رمز لإخفاء شاشة التوقف أولاً تشغيل شاشة التوقف على سطح المكتب الخاص به.
  • في حالة تشغيل شاشة التوقف على سطح المكتب الخاص به, التعليمة البرمجية إغلاق شاشة التوقف هناك.
  • في حالة لم سطح المكتب لشاشة التوقف يستخدم الرمز سطح المكتب الافتراضي.


للقيام بذلك، الحصول على مؤشر إلى سطح المكتب شاشة التوقف تعداد الإطارات ذلك سطح المكتب و ثم نشر WM_CLOSE إلى إطار شاشة التوقف.

توضح التعليمة البرمجية التالية كيفية القيام بذلك. لاحظ أنه إذا تم تعيين كلمة مرور لشاشة توقف التعليمة البرمجية التالية إحضار مربع الحوار كلمة المرور مطالبة المستخدم بكلمة مرور و إنهاء التطبيق شاشة التوقف فعلياً.
BOOL CALLBACK KillScreenSaverFunc(HWND hwnd, LPARAM lParam) { 	if(IsWindowVisible(hwnd)) 		PostMessage(hwnd, WM_CLOSE, 0, 0); 	return TRUE; } HDESK hdesk; hdesk = OpenDesktop(TEXT("Screen-saver"), 0, FALSE, DESKTOP_READOBJECTS | DESKTOP_WRITEOBJECTS); if (hdesk) { 	EnumDesktopWindows(hdesk, KillScreenSaverFunc, 0);	CloseDesktop(hdesk); } else { 	// Windows 2000 and later: 	// If there is no screen saver desktop, the screen saver 	// is on the default desktop. Close it by sending a 	// WM_CLOSE. PostMessage(GetForegroundWindow(), WM_CLOSE, 0, 0L); } 
لاحظ أن إنهاء شاشة توقف الذي يكون بالفعل قيد التشغيل كما هو موضّح أعلاه منفصلة كلية من تعطيل شاشة التوقف كلياً, بحيث تبدأ لم شاشة التوقف بعد انتهاء الفترة الزمنية تم تعيينها. يمكن القيام بذلك بسهولة باستخدام:
SystemParametersInfo( SPI_SETSCREENSAVEACTIVE,                      FALSE,                      0,                      SPIF_SENDWININICHANGE                     );				
تعمل هذه الطريقة بشكل جيد مع إنهاء شاشة التوقف قيد التشغيل حالياً. ومع ذلك، تكون المشكلة واحدة التي قد يواجهها أن النظام لن يؤدي إلى إعادة تشغيل شاشة التوقف إلا إذا كان المستخدم بتحريك الماوس أو بضغط مفتاح. إذا كنت في حاجة إلى شاشة التوقف بدء التشغيل مرة أخرى تحتاج لإعادة تهيئة فترة المهلة. القيام بذلك باستخدام إحدى الطرق التالية:
  • استدعاء SystemParametersInfo (SPI_SETSCREENSAVEACTIVE ، TRUE، 0 SPIF_SENDWININICHANGE).
  • باستخدام SetCursorPos() لمحاكاة إدخال المستخدم.
كلا الطريقتين سيؤدي إلى إعادة تشغيل العداد المهلة من أجل شاشة توقف النظام.
إلغاء تنشيط تعطيل إيقاف تشغيل إيقاف تشغيل شاشة التوقف

تحذير: تمت ترجمة هذا المقال تلقائياً

خصائص

رقم الموضوع: 140723 - آخر مراجعة: 02/22/2007 04:02:17 - المراجعة: 3.2

  • Microsoft Win32 Software Development Kit (SDK) 3.1
  • kbmt kbcode kbhowto kbscreensaver KB140723 KbMtar
تعليقات