d 3 يناير، 2018 – الصفحة 9 – مدونة الفريق

اليوم: 3 يناير، 2018

  • صدور حزمة تطوير وندوز فون لشهر يناير

    صدور حزمة تطوير وندوز فون لشهر يناير
    أصدرت اليوم مايكروسوفت تحديث لحزمة تطوير وندوز فون 7 الموعودة لشهر يناير، والتي ستدعم بالدرجة الأولى خاصية النسخ واللصق والعديد من التحسينات على النظام.
    البرامج الموجودة حاليا على متجر التطبيقات ستستمر بالعمل حتى رغم صدور هذا التحديث، ومن يرغب بالمطورين بتحديث برامجه فلا بأس في هذا،
    مع العلم أن البرامج القديمة لا يتوجب أن ان يتم تحديثها لتدعم التحسينات أو الإضافات الجديدة كالنسخ واللصق، فهذه المزايا ستتوفر تلقائيا على نظام التشغيل على الهاتف، وبالتالي البرامج الموجودة ستدعمها ( كم أحب مايكروسوفت )،
    وقد تضمنت النسخة إضافة ميزة

    • النسخ واللصق.
    • تحسينات وإصلاحات .
    • تحديث المحاكي لتظهر به الخصائص الجديدة كالنسخ واللصق مثلا.
    • تحديث خرائط بنج Bing Maps
    • تضمين تحديثات شهر أكتوبر في هذا الإصدار.

    يمكن تحميل التحديث الجديد عبر هذا الرابط Windows Phone Developer Tools January 2011 Update

    windows phone 7 copy paste

  • شاشة تقديمية (splash screen) أفضل لبرامج windows phone 7

    من منا لم تواجهه مشكلة عند جعل الشاشة التقديمية تظهر في الصفحة الأولى!، المشكلة ليست في التجريب، ولكن المشكلة ستظهر حينما تجرب مايكروسوفت تطبيقاتك قبل نشرها، لذلك ساحاول هنا عرض كيف يمكنك أن استبدال الشاشة التقديمية الاعتيادية بواحدة أفضل بكثير.

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

    وأيضا سوف أعرض كيفية إضافة شريط تحميل ( progressbar) لإعطاء البرنامج شيئا من الحركة والتفاعل

    ,تحميل المشروع جاهز وبه مكتبة العمل

    في البداية أنشئ مشروع جديد وبعد ذلك أنشئ صفحة جديدة بعنوان MySplash.xaml

    الآن أضف مرجع reference لفضاء الأسماء System.Windows.Controls.Primitives وهو System.Windows.Controls

    وبعد ذلك أضف شريط التحميل (progressbar) للصفحة ، وقد قمت بإنشاء مكتبة DLL لأوفر عليك كتابة الكود وهي باسم Libs_ProgressTempCSharp وموجودة في ملفات الكود المرفقة ويمكنك إضافتها من add reference

    وبعدها قم بفتح صفحة التطبيق العامة (App.xaml) واستدعي المكتبة بالشكل التالي :

    xmlns:unsupported="clr-namespace:Microsoft.Phone.Controls.Unsupported"    

    وبعد ذلك أضف هذه الوسوم بداخل وسم Application.Resources

          <Application.Resources>            
    <Style x:Key="PerformanceProgressBar" TargetType="ProgressBar">
    <Setter Property="Foreground" Value="{StaticResource PhoneAccentBrush}"/>
    <Setter Property="Background" Value="{StaticResource PhoneAccentBrush}"/>
    <Setter Property="Maximum" Value="100"/>
     <Setter Property="IsHitTestVisible" Value="False"/>
    <Setter Property="Padding" Value="{StaticResource PhoneHorizontalMargin}"/>
    <Setter Property="Template">
    <Setter.Value>
    <ControlTemplate TargetType="ProgressBar">
    <unsupported:RelativeAnimatingContentControl HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
     <unsupported:RelativeAnimatingContentControl.Resources>
    <ExponentialEase EasingMode="EaseOut" Exponent="1" x:Key="ProgressBarEaseOut"/>
    <ExponentialEase EasingMode="EaseOut" Exponent="1" x:Key="ProgressBarEaseIn"/> </unsupported:RelativeAnimatingContentControl.Resources>
     <VisualStateManager.VisualStateGroups>
     <VisualStateGroup x:Name="CommonStates">
    <VisualState x:Name="Determinate"/>
     <VisualState x:Name="Indeterminate">
     <Storyboard RepeatBehavior="Forever" Duration="00:00:04.4">
    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="IndeterminateRoot">
    <DiscreteObjectKeyFrame KeyTime="0">
    <DiscreteObjectKeyFrame.Value>
    <Visibility>Visible</Visibility>
     </DiscreteObjectKeyFrame.Value>
     </DiscreteObjectKeyFrame>
     </ObjectAnimationUsingKeyFrames>
    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DeterminateRoot">
    <DiscreteObjectKeyFrame KeyTime="0">
     <DiscreteObjectKeyFrame.Value>
     <Visibility>Collapsed</Visibility>
    </DiscreteObjectKeyFrame.Value>
    </DiscreteObjectKeyFrame>
    </ObjectAnimationUsingKeyFrames>
    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00.0" Storyboard.TargetProperty="X" Storyboard.TargetName="R1TT">
     <LinearDoubleKeyFrame KeyTime="00:00:00.0" Value="0.1"/>
    <EasingDoubleKeyFrame KeyTime="00:00:00.5" Value="33.1" EasingFunction="{StaticResource ProgressBarEaseOut}"/>
    <LinearDoubleKeyFrame KeyTime="00:00:02.0" Value="66.1"/>
    <EasingDoubleKeyFrame KeyTime="00:00:02.5" Value="100.1" EasingFunction="{StaticResource ProgressBarEaseIn}"/>
    </DoubleAnimationUsingKeyFrames>
    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00.2" Storyboard.TargetProperty="X" Storyboard.TargetName="R2TT">
    <LinearDoubleKeyFrame KeyTime="00:00:00.0" Value="0.1"/>
     <EasingDoubleKeyFrame KeyTime="00:00:00.5" Value="33.1" EasingFunction="{StaticResource ProgressBarEaseOut}"/>
    <LinearDoubleKeyFrame KeyTime="00:00:02.0" Value="66.1"/>
    <EasingDoubleKeyFrame KeyTime="00:00:02.5" Value="100.1" EasingFunction="{StaticResource ProgressBarEaseIn}"/>
    </DoubleAnimationUsingKeyFrames>
    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00.4" Storyboard.TargetProperty="X" Storyboard.TargetName="R3TT">
    <LinearDoubleKeyFrame KeyTime="00:00:00.0" Value="0.1"/>
     <EasingDoubleKeyFrame KeyTime="00:00:00.5" Value="33.1" EasingFunction="{StaticResource ProgressBarEaseOut}"/>
     <LinearDoubleKeyFrame KeyTime="00:00:02.0" Value="66.1"/>
     <EasingDoubleKeyFrame KeyTime="00:00:02.5" Value="100.1" EasingFunction="{StaticResource ProgressBarEaseIn}"/>
     </DoubleAnimationUsingKeyFrames>
     <DoubleAnimationUsingKeyFrames BeginTime="00:00:00.6" Storyboard.TargetProperty="X" Storyboard.TargetName="R4TT">
    <LinearDoubleKeyFrame KeyTime="00:00:00.0" Value="0.1"/>
     <EasingDoubleKeyFrame KeyTime="00:00:00.5" Value="33.1" EasingFunction="{StaticResource ProgressBarEaseOut}"/>
    <LinearDoubleKeyFrame KeyTime="00:00:02.0" Value="66.1"/>
     <EasingDoubleKeyFrame KeyTime="00:00:02.5" Value="100.1" EasingFunction="{StaticResource ProgressBarEaseIn}"/>
     </DoubleAnimationUsingKeyFrames>
    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00.8" Storyboard.TargetProperty="X" Storyboard.TargetName="R5TT">
    <LinearDoubleKeyFrame KeyTime="00:00:00.0" Value="0.1"/>
    <EasingDoubleKeyFrame KeyTime="00:00:00.5" Value="33.1" EasingFunction="{StaticResource ProgressBarEaseOut}"/>
     <LinearDoubleKeyFrame KeyTime="00:00:02.0" Value="66.1"/>
    <EasingDoubleKeyFrame KeyTime="00:00:02.5" Value="100.1" EasingFunction="{StaticResource ProgressBarEaseIn}"/>
     </DoubleAnimationUsingKeyFrames>
    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00.0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="R1">
    <DiscreteDoubleKeyFrame KeyTime="0" Value="1"/>
    <DiscreteDoubleKeyFrame KeyTime="00:00:02.5" Value="0"/>
     </DoubleAnimationUsingKeyFrames>
    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00.2" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="R2">
    <DiscreteDoubleKeyFrame KeyTime="0" Value="1"/>
    <DiscreteDoubleKeyFrame KeyTime="00:00:02.5" Value="0"/>
    </DoubleAnimationUsingKeyFrames>
    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00.4" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="R3">
    <DiscreteDoubleKeyFrame KeyTime="0" Value="1"/>
     <DiscreteDoubleKeyFrame KeyTime="00:00:02.5" Value="0"/>
     </DoubleAnimationUsingKeyFrames>
     <DoubleAnimationUsingKeyFrames BeginTime="00:00:00.6" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="R4">
    <DiscreteDoubleKeyFrame KeyTime="0" Value="1"/>
    <DiscreteDoubleKeyFrame KeyTime="00:00:02.5" Value="0"/>
    </DoubleAnimationUsingKeyFrames>
     <DoubleAnimationUsingKeyFrames BeginTime="00:00:00.8" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="R5">
    <DiscreteDoubleKeyFrame KeyTime="0" Value="1"/>
    <DiscreteDoubleKeyFrame KeyTime="00:00:02.5" Value="0"/>
    </DoubleAnimationUsingKeyFrames>
     </Storyboard>
    </VisualState>
    </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
     <Grid>
    <Grid x:Name="DeterminateRoot" Margin="{TemplateBinding Padding}" Visibility="Visible">
    <Rectangle x:Name="ProgressBarTrack" Fill="{TemplateBinding Background}" Height="4" Opacity="0.1"/>
    <Rectangle x:Name="ProgressBarIndicator" Fill="{TemplateBinding Foreground}" HorizontalAlignment="Left" Height="4"/> </Grid>
    <Border x:Name="IndeterminateRoot" Margin="{TemplateBinding Padding}" Visibility="Collapsed">
     <Grid HorizontalAlignment="Left">
    <Rectangle Fill="{TemplateBinding Foreground}" Height="6" IsHitTestVisible="False" Width="6" x:Name="R1" Opacity="0" CacheMode="BitmapCache">
    <Rectangle.RenderTransform>
    <TranslateTransform x:Name="R1TT"/>
     </Rectangle.RenderTransform> </Rectangle>
    <Rectangle Fill="{TemplateBinding Foreground}" Height="6" IsHitTestVisible="False" Width="6" x:Name="R2" Opacity="0" CacheMode="BitmapCache">
    <Rectangle.RenderTransform>
    <TranslateTransform x:Name="R2TT"/>
    </Rectangle.RenderTransform> </Rectangle>
    <Rectangle Fill="{TemplateBinding Foreground}" Height="6" IsHitTestVisible="False" Width="6" x:Name="R3" Opacity="0" CacheMode="BitmapCache"> <Rectangle.RenderTransform>
    <TranslateTransform x:Name="R3TT"/>
     </Rectangle.RenderTransform> </Rectangle>
    <Rectangle Fill="{TemplateBinding Foreground}" Height="6" IsHitTestVisible="False" Width="6" x:Name="R4" Opacity="0" CacheMode="BitmapCache">
    <Rectangle.RenderTransform>
     <TranslateTransform x:Name="R4TT"/>
     </Rectangle.RenderTransform> </Rectangle>
     <Rectangle Fill="{TemplateBinding Foreground}" Height="6" IsHitTestVisible="False" Width="6" x:Name="R5" Opacity="0" CacheMode="BitmapCache"> <Rectangle.RenderTransform>
    <TranslateTransform x:Name="R5TT"/>
     </Rectangle.RenderTransform> </Rectangle>
     </Grid> </Border> </Grid>
    </unsupported:RelativeAnimatingContentControl>
    </ControlTemplate>
     </Setter.Value>
    </Setter>
     </Style>
    </Application.Resources>

    حاول ترتيب وتزيين شاشتك التقديمية بالطريقة التي تحبها ( أنا قمت باستخدام أبسط طريقة ) ، أضف أداة شريط التحميل ( progressbar) ، واختر لون لها ولا تنسى استخدام التنسيق الخاص بها :

    <ProgressBar x:Name="DownloadProgress" IsIndeterminate="False"    Style="{StaticResource PerformanceProgressBar}" Margin="0,347,7,173" />    

    أيضا لا تنسى إسناد القيمة true للخاصية IsIndeterminate الخاصة بالأداة progressbar في حدث تحميل الصفحة بالشكل التالي:

    this.DownloadProgress.IsIndeterminate = true;    

    إلى الآن لم نقم بعمل أي شيء جديد ، اجعل الصفحة الأخرى ( ليست صفحة MySplash.xaml) هي الصفحة الافتراضية ( DefaultTask) ، بالتأكيد ستقوم بتغييرها من ملف WMAppManifest.xml وهنا قمت باستدعاء صفحة [ MainPage.xaml ]

    قم بفتح الصفحة  MainPage واستدعاء فضاء الأسماء التالية :

      using System.Threading; using System.Windows.Controls.Primitives;    

    وفضاء الأسماء الأول يحتوي على فئة BackgroundWorker  التي تستخدم لل multithreading وهي تستخدم لإراحة ال thread في الوقت الذي تريده

    والثاني يحتوي على أداة popup وهي مسؤولة عن إظهار الصفحة أو ال usercontrol أو أي قطعة في الصفحة الحالية

    الآن لنكتب الكود:

    ضع هذا الكود بداخل الفئة

        Popup Mypopup = new Popup() { IsOpen = true, Child = new MySplash() };
    BackgroundWorker MybackroungWorker=new BackgroundWorker();

    أنا استخدمت object initializer لل popup ثم أسندت قيمة true للمتغير IsOpen وهناك شيء آخر مهم وهو إسناد اسم لعنصر child ( وهي هنا الشاشة التقديمية MySplash ) ، ولاحظ أنه يجب استدعاء اسم فئة الصفحة وليس اسم الصفحة نفسها

                 private void PopupView()
     {
     MybackroungWorker.DoWork += ((s, args) =>< {
     Thread.Sleep(4000); // time here });
     MybackroungWorker.RunWorkerCompleted += ((s, args) =>
     { this.Dispatcher.BeginInvoke(() =>
     {
     this.Mypopup.IsOpen = false;
     }
     ); }); MybackroungWorker.RunWorkerAsync(); }

    هذه الدالة تدعى popup ، اجعل وقت ال backgroundworker أن يوقف ال thread بواسطة دالة Thread.Sleep() ، فهي تأخذ قيمة الوسيط بأجزاء الألف من الثانية وهنا 4 ثواني ( 4000 جزء من الألف من الثانية )

    الان تحتاج لإستدعاء الدالة وأنا أفضل أن تستدعيها من خلال مشيد

         PopupView();    

    بقي أمر واحد وهو عند الضفط على زر الرجوع ، سيتم ظهور هذه ال popup ، لذلك قمت بعمل متغير عام من خلاله يتم فحص هل تم ظهور الشاشة التقديمية أم لا ، ويمكن وضع هذا المتغير في فئة بالشكل التالي:

                    public class General              {             public static bool IsOpen = false;             
    }

    فحص العملية قبل استدعاء الدالة

      if (General.IsOpen==false)

    الشي المذهل يكمن في شيفرة فئة Popup انه يمكنك استخدامها في مواضع عدة ، حيث ستعطي برنامجك تأثيرا جميلا، على سبيل المثال يمكن ان تستخدمها لإظهار معلومات حول برنامجك ويمكن أن تخفيها عند ضغط المستخدم عليها... وغيرها الكثير فهذا الأمر سيعتمد على احتياجات البرنامج لديك ، وأنا سأترك لك حرية التفكير والابداع

  • تجربة برامجك على الهاتف Windows Phone 7

    تجربة برامجك على الهاتف Windows Phone 7
    لنفترض أنك جلست تتعلم الـWPF  والسيلفرلايت لمدة أشهر، وجلست أشهر تحاول اتقانه ، وكذلك أشهر للانتقال إلى بيئة الوندوز فون 7 ، وكذلك شهر وأنت تخطط للبرامج التي ستقوم بعملها ، وكذلك شهور في بناء هذه البرامج ، وشهر في التحضير لنشر البرامج والتسجيل لها ، ولكن بقي خطوة أخيرة ، وهي نقل البرنامج على هاتف يحمل هذا النظام لتجربته ، فالتجربة على جوال حقيقي قد تختلف نوعا ما عن التجربة على المحاكي، وأحيانا تتطرق لعمل خطوات على البرنامج وذلك بعد اخراجه في ملف XAP ، لنفرض أنك قمت بخطوة إضافية على الملف النهائي للبرنامج – مثلا منعت الهندسة العكسية – وتريد تجربة البرنامج على الهاتف ، وهنا لن يفيدك الفيجوال ستوديو Visual Studio ، والحل يكمن في هذه الاداة 

    أداة Application Deployment
    هذه الأداة جزء من الأدوات  التي صدرت في Windows Phone Developer Tools October 2010 Update ، ويمكنك تحميلها عبر هذا الرابط
    Windows Phone Developer Tools October 2010 Update

    قم بتنصيب الملف ، ثم افتح الأداة Application Deployment

    ثم اختار طريقة النشر ، مثلا على هاتف حقيقي ن أم على المحاكي ، واضغط على Deploy
    انتظر لحظات وستظهر النتيجة أمامك وستكتب لك الأداة النتيجة
    نجاح أو فشل عملية النشر.

    بالتوفيق لكم

  • ماذا تعني Submission In Progress عند نشر برامج الوندوز فون

    أحيانا عندما تنشر برنامجك ، تظهر لك عبارة Submission In Progress  بجانب البرنامج ، والمفترض أن تظهر رسالة Testing in Progress ، أي أن البرنامج قيد الفحص من قبل مايكروسوفت.

    العبارة التي تظهر Submission In Progress  تعني أن برنامجك قيد الإرفاق ، أي أنك لم تكمل باقي الخطوات الصحيحة لإكمال رفع البرنامج. ويحدث هذا غالبا في الخطوة الخامسة وهي أنك لم تضغط على زر Submit for Certification ، وقمت بالضفط على زر حفظ في أي مرحلة من مراحل رفع الملفات.
    ولو بقي برنامجك مدى الحياة فلن يظهر في السوق طالما أنك لم تطلب فحص من مايكروسوفت.
    يمكنك إعادة الخطوات من جديد ، أو الدخول على البرنامج المرفوع ومتابعة الخطوات حتى الخطوة الخامسة واهتيار Submit for Certification.

  • نظرة سريعة على الويندوز 8 النسخة التجريبية

    هذا الفيديو المتواضع قمنا بعمله وهو يعطيك نظرة سريعة على الويندوز 8 النسخة التجريبية Consumer Preview وفيه توضيح لبعض الخصائص الجديدة أيضا الفيديو تم رفعه بأعلى جودة ، لمن يرغب بمشاهدته بجودة عالية يختار الجودة التي يحبها ويستمتع

  • حل مشكلة منصة الدوت نت 3.5.1 على الوندوز 8

    حينما قمت بتجربة نسخة الوندوز 8 الإصدار 64 بت ، المدمج بها حزمة تطوير النظام ، واجهتني مشكلة في كافة برامج التطوير ، فلا الفيجوال ستوديو المدمج قد اشتغل ، ولا الفيجوال الذي قمت بتنصيبه أيضا ، بل ان الزوون ، والSQL Server  ما رضي ينزل بسبب هذه المشكلة.

    المشكلة
    عندما ترد أن تعمل أي حركة ـ يطلب منك تمكين الدوت نت فريم وورك 3.5.1 ، وعندما يبدأ بالتصيب يخبرك بأنه يجب توافر اتصال انترنت، وبعد محاولات عديدة ووقت طويل ، تجد أن عملية التنصيب تفشل.
    مهما حاولت من حلول من الدخول إلى إضافة أو إزالة مكونات الوندوز ، أو تنصيب الحزمة كاملة من الفريمورك فلن يعمل.

    أين تكمن بالضبط
    قمت بتنصيب عدة برمجيات لتصليح منصة العمل ولكن بلا جدوى فالبرمجيات تخبرك بعدم توافر المنصة 3 أو 2 أو 3.5 ، على النظام وهذا ما أثار دهشتي
    فكيف بنظام تشغيل حديث من مايكروسوفت ، لا يوجد به ضمنيا هذه المنصات .

    الحل
    قمت بالبحث في الإنترنت وفي المواقع المعنية ولم أجد للأسف حل لهذه المشكلة وكثيرون كانوا يواجهونها.

    قمت بتجربة هذا الحل البسيط وقد نجح
    قمت بالذهاب إلى مجلد المسار التالي
    C:\Windows\Microsoft.NET\Framework64\v3.5
    فوجدته لا يحتوي الا ملف واحد فقط ، فقمت بحذف المجلد كله.
    وقمت بتحميل الحزمة الكاملة من منصة الدوت نت 3.5.1
    http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe

    والحمد لله كل شيء يعمل بالشكل المطلوب

  • لا تقم بتنصيب Windows 8 Consumer Preview

    إذا كنت مطورا فإن هذه النصيحة ستفيدك كثيرا ، والنصيحة بجمل
    لا تقم بتنصيب نسخة Windows 8 Consumer Preview ، وإضاعة يومين كاملين من حياتك لأنك في النهاية ستحذفها
    والسبب أنها تحتوي على العديد من المشكلات
    منها
    – لم يعمل SQL Server 2008 Express وهو بنظري اساسي لعملي وايضا اساسي لعمل LightSwitch وبالتالي سيتوقف عملك
    – لم يتم يتنصيب حزمة التطوير الخاصة بالويندوز فون بالكامل وحديث مشكلة معي في خطوة تنصيب XNA

    الكثير من المشاكل الأخرى حصلت معي منها لا الحصر التعليق الدائم للبرامج ، التعليق للكيبورد ، وغيرها ، ولكن بنظري المشكلتين فوق كافيتين ، وهذا بعد أنني لم أجرب كافة التطبيقات والخصائص البرمجية.

    طبعا الويندوز جذاب ، وكم أنا حزين على فراقك يا ويندوز 8.

    عن إذنكم أقوم أبحث عن اسطوانة ويندوز 7 معربة ومكركة

  • صورة اليوم : وندوز 7

    هذه الصورة لحزمة تنصيب الوندوز 7

  • كل ما تحتاج معرفته عن نظام مايكروسوفت الجديد ويندوز 10

    بعد الكثير من التكهنات حول الاسم الذي اختارته مايكروسوفت لنظام تشغيلها الجديد يبدو أن توقعات الجميع كانت خاطئة، ففيما كانت التوقعات تشير إلى أنه سيحمل اسم ويندوز 9 أو حتى Windows TH فإن مايكروسوفت قررت أن يكون الاسم هو ويندوز 10 لكن هذه لم تكن المفاجئة الوحيدة.
    في فعالية بسيطة لم تشهد حضور المدير التنفيذي لمايكروسوفت (ساتيا نديلا) و عرفت مشاركة محدودة من وسائل الإعلام و لم يتم نقلها مباشرة على الإنترنيت أعلنت مايكروسوفت عن نظامها الجديد ويندوز 10 مخالفة بذلك كل التوقعات في هذا الصدد و التي أشارت إلى أن النظام الجديد سيحمل اسم إما ويندوز 9 احتراما للتسلسل الذي بدأ مع ويندوز 7 أو Windows TH، لكن يبدو في النهاية أن مايكروسوفت أرادت القطع مع ويندوز 8 و الابتعاد عنه خصوصا أنه لم يحقق النجاح المرجو.

    النظام الجديد من مايكروسوفت ويندوز 10 جاء ليؤكد أخبارا راجت منذ مدة طويلة و أكدت رغبة الشركة في توحيد جميع أنظمتها و هو بالضبط ما تأكد اليوم حيث أن ويندوز 10 سيأتي متوافقا مع جميع أنواع الأجهزة (حواسيب مكتبية و محمولة، هواتف ذكية، حواسيب لوحية، التلفزيونات الذكية) حيث سيكون النظام الجديد متوافقا مع أحجام شاشات مختلفة من 4 إلى 80 بوصة، بالإضافة إلى توحيد المتجر الإلكتروني لكل هذه الأجهزة.
    مايكروسوفت حرصت كذلك على التأكيد أن النظام الجديد (ويندوز 10) رعي فيه بشكل كبير مصالح الشركات و المقاولات، حيث أشارت إلى أن ويندوز 10 سيكون متوافقا مع جميع الأنظمة المعلوماتية الخاصة بتسيير الشركات المتوفرة حاليا، و هو الأمر الذي ينظر إليه على أنه محاولة لتجاوز مشاكل ويندوز 8.

    التصميم الجديد لويندوز 10 فيه العديد من المميزات حيث يبرز خصوصا عودة (قائمة البداية) بالإضافة لواجهة جديدة أكثر فعالية تمكن المستخدم من تحكم أفضل بالنوافذ و التطبيقات بالإضافة إلى زر (Task View) و الذي يمكن من التنقل بسهولة بين النوافذ و التطبيقات المختلفة في النظام الجديد، كما أنها ستدمج محرك بحث داخل نظام ويندوز 10.

    من جهة أخرى أعلنت مايكروسوفت أنها ستقدم النسخة النهائية من نظامها ويندوز 10 في النصف الثاني من العام المقبل لكن المستخدمين سيكونون قريبا على موعد مع نسخة تجريبية من هذا النظام.