كيفية الحصول على مسار الملفات المضافة إلى تطبيق Windows Mobile؟

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

سؤال

لقد أضفت ملف wav إلى تطبيق Windows Mobile الخاص بي وأريد استخدام MobilePlaySound في CoreDll.dll لتشغيله.

اسم الملف هو أحد معلماته:


MobilePlaySound(fileName, IntPtr.Zero, (int)(Flags.SND_ASYNC | Flags.SND_FILENAME));

أقوم بإنشاء مجلد جديد "صوت"، وأضف "start.wav" إلى المشروع وقم بتعيين الخاصية الخاصة به "Build Action" على "الموارد المضمنة".

ثم قمت بتعيين اسم الملف:


fileName = "\\Program Files\\myApp\\sound\\start.wav";

لكن الصوت لا يلعب على الإطلاق.ما هو filePath الصحيح إذن؟

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

المحلول

من خلال تعيين إجراء الإنشاء على "الموارد المضمنة"، سيتم تجميع الملف في التجميع الخاص بك كمورد.وهذا يعني أنه سيتم تضمين ملف wav في ملف .exe أو .dll الخاص بك، ولن يظهر في نظام الملفات.ولهذا السبب، لا يمكنك تمرير اسم ملف wav إلى طريقة ما تحتاج إليه.

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

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

باختصار:

  • إجراء البناء = "المحتوى"
  • نسخ إلى دليل الإخراج = "نسخ دائمًا" أو "نسخ إذا كان أحدث"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top