BUG: استخدام وضع Windows الكلاسيكي في Windows Explorer إرجاع قيمة غير صحيحة لـ SelectedItems

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

اضغط هنا لرابط المقالة باللغة الانجليزية819499
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الأعراض
عند تعيين مستكشف Windows لعرض المجلدات في وضع Windows الكلاسيكي الأسلوب SelectedItems واجهة IShellFolderViewDual بإرجاع مجموعة غير صحيحة من FolderItems.
تصريح
أقرت Microsoft أن هذا خطأ في منتجات Microsoft المسردة في بداية هذه المقالة.
معلومات أخرى

خطوات إعادة إنشاء في سلوك

  1. افتح محرر نص مثل المفكرة قم بلصق التعليمة البرمجية التالية إلى ملف جديد فيه ثم قم بحفظ الملف كـ Sample.cpp:
    #include <Windows.h>#include <TChar.h>#import <SHDocVw.dll>#import <Shell32.dll>#include <iostream>using namespace std;int _tmain(int argc, TCHAR ** argv){    CoInitialize(0);    try    {            SHDocVw::IShellWindowsPtr sw(__uuidof(SHDocVw::ShellWindows));        for (long i = 0; i < sw->Count; ++i)        {            if (SHDocVw::IWebBrowser2Ptr ie = sw->Item(i))            {                cout << _com_util::ConvertBSTRToString(ie->LocationURL) << endl;                if (Shell32::IShellFolderViewDualPtr view = ie->Document)                {                   cout << view->SelectedItems()->Count << _T(" selected item(s)") << endl;                }            }        }    }    catch (_com_error const & e)    {        cout << e.ErrorMessage() << endl;    }    CoUninitialize();    return 0;}
  2. ترجمة الملف عن طريق تشغيل الأمر التالي في موجه الأوامر: /EHsc cl Sample.cpp
  3. إغلاق كافة إطارات مستكشف Windows المفتوحة حالياً.
  4. انقر بزر الماوس الأيمن فوق ابدأ ثم انقر فوق استكشاف إلى فتح إطار مستكشف Windows.
  5. من القائمة أدوات، انقر فوق مجلد خيارات
  6. في التبويب عام ، حدد الخيار استخدام مجلدات Windows الكلاسيكية ضمن عرض ويب ثم انقر فوق موافق.
  7. حدد مجلد الذي يحتوي على العديد من العناصر. في الجزء الأيسر، حدد بعض العناصر في هذا المجلد.
  8. في موجه الأوامر، قم بتشغيل الملف التنفيذي الملف Sample.exe (الذي تم إنشاؤه في الخطوة 2).

    عرض الإخراج نتيجة الخاصية Count مثيل FolderItems التي تم إرجاعها بواسطة الأسلوب SelectedItems واجهة IShellFolderViewDual.

    تتوقع الإخراج أن يكون عدد العناصر التي قمت بتحديدها في المجلد في مستكشف Windows من الخطوة السابقة. ومع ذلك، الإخراج على العدد من كافة العناصر في المجلد الذي تم تحديده في مستكشف Windows.
  9. عندما يكون مستكشف Windows في وضع عرض ويب ، يتم تعيين عناصر المجلد التي تم إرجاعها بواسطة SelectedItems بشكل صحيح إلى مثيلات FolderItem المحددة.

    للتحقق من العبارة السابقة في مستكشف Windows, من القائمة أدوات، انقر فوق خيارات المجلد.
  10. في التبويب عام، انقر فوق الخيار تمكين محتوى ويب على سطح المكتب ضمن عرض ويب ثم انقر فوق موافق لإغلاق مربع الحوار.
  11. في موجه الأوامر، قم بتشغيل الملف Sample.exe (تم إنشاؤه في الخطوة 2).

    عرض الإخراج نتيجة الخاصية Count مثيل FolderItems التي تم إرجاعها بواسطة الأسلوب SelectedItems واجهة IShellFolderViewDual.

    يكون الإخراج كما هو متوقع ، عدد العناصر التي قد حددتها في المجلد.
بدلاً من ذلك، يمكن استخدام أسلوب FocusedItem واجهة IShellFolderViewDual لاستبدال وظيفة أسلوب SelectedItems غير صحيحة. أسلوب FocusedItem إرجاع العنصر المحدد حالياً في المجلد ثم يقوم بتقييد التطبيق الخاص بك إلى تحديد مجلد واحد في مستكشف Windows.
مراجع
للحصول على معلومات إضافية حول Shell البرمجة الدليل راجع وثائق MSDN التالي:
shell الدليل الخاص للمبرمجين
http://msdn2.microsoft.com/en-us/library/bb776778.aspx

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

خصائص

رقم الموضوع: 819499 - آخر مراجعة: 02/28/2014 04:34:23 - المراجعة: 3.4

Microsoft Windows 2000

  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbshell kbbug KB819499 KbMtar
تعليقات