هل من الممكن تعيين / تحرير ملف خصائص موسعة مع حزمة رمز واجهة برمجة التطبيقات ويندوز?

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

سؤال

أود أن أعرف ما إذا كان من الممكن تعيين / تحرير ملف خصائص موسعة (مستكشف:انقر بزر الماوس الأيمن > خصائص > تفاصيل) باستخدام حزمة كود واجهة برمجة تطبيقات ويندوز.

var shellFile = Microsoft.WindowsAPICodePack.Shell.ShellObject.FromParsingName(filePath);
var artistName = shellFile.Properties.GetProperty(SystemProperties.System.Music.DisplayArtist).ValueAsObject.ToString();
var duration = TimeSpan.FromMilliseconds(Convert.ToDouble(shellFile.Properties.GetProperty(SystemProperties.System.Media.Duration).ValueAsObject) * 0.0001);

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

شكرا لكم جميعا لأخذ الوقت لمساعدتي.

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

المحلول

لقد وجدت طريقة لتحرير بعض الخصائص مع ShellPropertyWriter لكن بعض الخصائص للقراءة فقط.

var shellFile = ShellFile.FromParsingName(filePath);
ShellPropertyWriter w = shellFile.Properties.GetPropertyWriter();
try
{
    w.WriteProperty(SystemProperties.System.Author, new string[] { "MyTest", "Test" });
    w.WriteProperty(SystemProperties.System.Music.Artist, new string[] { "MyTest", "Test" });
    w.WriteProperty(SystemProperties.System.Music.DisplayArtist, "Test");
}
catch (Exception ex)
{

}
w.Close();

في هذه العينة, ال 2 الأحداث الأولى من ShellPropertyWriter.WriteProperty() سوف تفعل بالضبط نفس الشيء ، تحرير حقل" المساهمة الفنانين " من الملف (إكسبلورر:انقر بزر الماوس الأيمن > خصائص > تفاصيل).ستلقي المكالمة الثالثة استثناء "تم رفض الوصول".بعضها قابل للتحرير ، والبعض الآخر ليس كذلك.فقط بحاجة إلى المحاولة.

نصائح أخرى

يمكنك الكتابة إلى ShellFile مباشرة عن طريق تحديد قيمة الخصائص دون ShellPropertyWriter:

var shellFile = ShellFile.FromFilePath(filePath);

shellFile.Properties.System.Author.Value = new string[] { "MyTest", "Test" };
shellFile.Properties.System.Music.Artist.Value = new string[] { "MyTest", "Test" };
shellFile.Properties.System.Music.DisplayArtist.Value = "Test";

فقط كن على علم ، أن تكون قادرة على تحرير حقول الترميز محددة من ملف ، فمن الضروري أن يكون الترميز المثبتة على الكمبيوتر.

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