كيفية الحصول على مؤشر LPITemidList وفقا لمسار مجلد؟

StackOverflow https://stackoverflow.com/questions/1090312

  •  11-09-2019
  •  | 
  •  

سؤال

أريد الحصول على رمز النظام لمجلد محدد، ولكن ربما الطريقة الوحيدة لاسترداد الأيقونة هي استخدام طريقة shgetfileinfo (). الطريقة الأولى من طريقة shgetfileinfo () هي مؤشر LPITemidList.

إذا كان لدي المسار المطلق للمجلد فقط، فكيف يمكنني الحصول على المؤشر وفقا للمسار؟

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

المحلول

shparsedisplayname ().

مرحبا بك في العالم الرائع من Pidls.

يمكنك قراءة المزيد في مقدمة في مساحة اسم قذيفة, ، ولكن أساسا PIDL هو مؤشر قائمة معرف العنصر. يمكنك التفكير في الأمر كأداة مرتبطة في ذاكرة متجاورة، ولكن بدلا من كل عقدة لها مؤشر إلى العقدة التالية، فإن لديك بدلا من ذلك لديك عضو CB الذي هو عدد البايتات التي تحتوي على العنصر، حتى تتمكن من إضافة ذلك إلى العنوان الأساسي للحصول على العنصر التالي. يتم إنهاء الخاتفات مع عنصر مع {cb = 0، abid = null}.

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

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

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