الحصول على المسار المطلق من قريب في ويندوز فيستا يبدو أن تفشل باستخدام Win32 / شل PathCombine ()
-
20-08-2019 - |
سؤال
ولست متأكدا إذا كان هذا هو المقصود السلوك أو خلل أو وظيفة الخاطئة التي أنا باستخدام، ولكن المشكلة هي أن PathCombine () إرجاع المسار الخاطئ على مربع فيستا.
والمسار النسبي (كما تصدرها WMP إلى قائمة تشغيل):
و..\..\..\Public\Music\Sample Music\Amanda.wma
والمسار انها لالنسبي هو:
وC:\Users\userX\Music\Playlists\playlist.wpl
ووPathCombine () إرجاع:
وC:\Users\userX\Public\Music\Sample Music\Amanda.wma
ولكن، يتم وضع الملف في الواقع هنا (إذا حكمنا من خلال مستكشف والحقيقة أنني لا أستطيع فتحه من التعليمات البرمجية):
وC:\Users\Public\Music\Sample Music\Amanda.wma
هل هذه مشكلة معروفة؟ هناك بعض وظيفة أخرى وأرجو أن تستخدم؟
المحلول
تحدد ثائق PathCombine أن المعلمة الثانية، <م> lpszDir م>، هو "مؤشر إلى سلسلة منتهية خالية من الحد الأقصى لطول MAX_PATH الذي يحتوي على مسار الدليل". يبدو أنك تمرير اسم مؤهل بشكل كامل من ملف داخل الدليل، بدلا من اسم مؤهل بشكل كامل من الدليل. لذا، فإنه يزيل ثلاثة عناصر: playlist.wpl، قوائم التشغيل، والموسيقى، ومن ثم إلحاق ما تبقى
ويجب أن تكون قادرا على استخدام PathRemoveFileSpec أ > لإزالة جزء من ملف مسار الدليل الخاص بك.
نصائح أخرى
وعند الجمع بين الخاص سلسلتين، وتحصل على ما يلي.
C:\Users\userX\Music\Playlists\playlist.wpl\..\..\..\Public\Music\Sample Music\Amanda.wma
وبما أن كل "..
" سوف تمحو القسم السابق، كنت في نهاية ش [ع مع التسلسل التالي:
C:\Users\userX\Music\Playlists\playlist.wpl\..\..\..\Public\Music\Sample Music\Amanda.wma
C:\Users\userX\Music\Playlists\..\..\Public\Music\Sample Music\Amanda.wma
C:\Users\userX\Music\..\Public\Music\Sample Music\Amanda.wma
C:\Users\userX\Public\Music\Sample Music\Amanda.wma
وذلك لأن "PathCombine()
" عدم اكتراثه ما إذا كان أي من شرائح المسار الخاص بك هي الملفات أو الدلائل. انها مجرد وسيلة غبية نسبيا من مطابقة الأحرف الملاحة الخاصة ( "..
" و ".
") ضد قطاعات الملاحة الحقيقية لتشكيل مسار بدون تلك الأحرف الملاحة الخاصة.
وانها مجرد افتراض أن "playlist.wpl
" هو اسم الدليل في قضيتك. تجريد أن إيقاف (أو إضافة أخرى "..
" في بداية المسار النسبي الخاص بك، خدعة لتجنب كود غريبة للتجريد من قسم اسم الملف)، وأنه ينبغي أن تعمل على ما يرام.