سؤال

أرغب في الاستفادة من وظيفة شريط مهام Windows 7 الجديدة في تطبيق .NET وأرغب في معرفة ما يعتقده الأشخاص بأنه أفضل طريقة للتحقق من ميزات Windows 7 في .NET.هدفي هو الحصول على رمز مميز لنظامي التشغيل Windows XP وWindows 7.

أنا لست حريصًا جدًا على:

  • ما عليك سوى تغليف رمز Windows 7 في محاولة الالتقاط
  • إذا كان نظام التشغيل = "Windows 7" إذن...

ما لم يكن هذا بالطبع ما يفعله معظمهم.لقد بحثت حقًا في كل مكان عن نهج جيد ولكن دون جدوى.يبدو أن مكتبة مجلد التعليمات البرمجية غير المُدارة من Microsoft تفترض أنها تعمل على نظام التشغيل Windows 7...

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

المحلول

أعتقد أنه لا يوجد شيء خاطئ في if OS = "Windows 7".بالطبع،

  • ينبغي أن يكون if OS >= "Windows 7" (بحيث لا يتعطل نظام التشغيل Windows 7.1 أو أي نظام آخر سيخلفه) و
  • ينبغي أن يتم ذلك عن طريق التحقق البيئة.OSVersion (النظام الأساسي و>= الإصدار).

إذا كنت لا تريد فوضى التعليمات البرمجية الخاصة بك مع if (isWindows7) {...}, ، قد ترغب في وضع التعليمات البرمجية الخاصة بالنظام الأساسي في فئة منفصلة.على سبيل المثال، يمكنك إنشاء واجهة

interface IOSSpecific {
    void AddToJumpList(...);
    ...
}

وتطبيقان لهذه الفئة، أحدهما لـ >= Win 7 والآخر للآخرين (الذي يفعل أشياء مختلفة أو لا يفعل شيئًا على الإطلاق).عند بدء تشغيل التطبيق الخاص بك، يمكنك إنشاء مثيل لبعض المتغيرات العامة من النوع IOSSpecific مع أحد التطبيقين.

نصائح أخرى

أتوقع منك أن تفعل:

if ( Environment.OSVersion.Platform == windows7Id)
{
    // win7 stuff
}

لا أعرف ما هي قيمة معرف Windows7 بالرغم من ذلك.

عادةً ما أطرح هذا السؤال لتحديد الكائن الذي أقوم بإنشائه من مصانعي لدعم الأنظمة الأساسية المختلفة.أجمل من رشها في جميع أنحاء قاعدة التعليمات البرمجية أو التقاط الاستثناءات.

إذا كنت تستخدم مكتبة مجمعة مثل Code Pack (http://code.msdn.microsoft.com/WindowsAPICodePack ) يقوم بالتحقق من الإصدار نيابةً عنك.يمكنك المضي قدمًا واستدعاء أساليب المكتبة وستقوم بطرح PlatformNotSupportedException إذا حاولت شيئًا غير موجود في نظام التشغيل أثناء التشغيل.

يمكنك أيضًا التقاط EntryPointNotFoundException إذا كنت تقوم بـ P/Invocing في بعض ملفات Windows DLL.هذا هو أفضل أسلوب عند إجراء التشغيل المتداخل الخاص بك، لأنه قد تتم إضافة الوظائف (عن طريق التحديثات وحزم الخدمة) بعد سنوات من الآن إلى نظام التشغيل ذي المستوى الأدنى.

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

إذا كنت تصر على القيام بالتحقق من الإصدار الخاص بك ومعرفة نظام التشغيل الذي تستخدمه، لو سمحت تذكر سحر >=.أنت تعرف مقدار التعليمات البرمجية الموجودة التي تختبر الإصدار بالضبط XP SP2 ثم يعرض مربع رسالة يقول "يتطلب XP SP2 أو إصدار أحدث"؟أ طن.في الواقع، هذا هو السبب في أن الإصدار الرئيسي لنظام Win7 هو 6 - بحيث تظل جميع التعليمات البرمجية التي تتحقق من "يساوي 6" تعمل.لا تكن ذلك الرجل.

if (Environment.OSVersion.Version.Major >= 6)
{
   if (Environment.OSVersion.Version.Minor >= 1)
     // Do Win7 thing
   else
     // Do Vista thing
}
else if (Environment.OSVersion.Version.Major >= 5)
 // Do XP thing

يمكنك العثور على جميع الأرقام الرئيسية/الثانوية في http://msdn.microsoft.com/en-us/library/ms724832%28VS.85%29.aspx

كيت

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