الحصول على خصائص البحث / propsys.dll فيستا / ويندوز من قذيفة في التعليمات البرمجية المدارة

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

سؤال

وقد أي شخص تمكن من القيام بذلك؟ حاولت جعل فئة مجمع المدارة لIPropertyStore ولكن أنا على الحصول AccessViolationExceptions على الطرق (أي IPropertyStore :: GetValue) التي تأخذ مؤشر إلى PROPVARIANT (المقدمة باعتبارها MarshalAs (UnmanagedType.Struct) من المعلمة في إصدار الإدارة بلدي) ربما فهمي COM وإمكانية التشغيل المتداخل غير كاف --- لست متأكدا إذا كانت مشاكل هي في بلدي إعلان PROPVARIANT البنية (والذي يستخدم حاليا فقط StructLayout.Sequential، يعلن تسلسل بايت، وتعالج بايت للحصول على قيم أنواع مختلفة في يدويا الاتحاد الخ)، وقضايا COM مع ما تمتلك عملية ما، أو أي شيء آخر. لقد حاولت إصدارات أخرى مختلفة من PROPVARIANT مثل استخدام StructLayout.Explicit للنقابات، هو عمل لا شيء. استرجاع PROPERTYKEYs مع IPropertyStore :: GetAt --- الذي أعلن أصلا عن اتخاذ مؤشر إلى PROPERTYKEY ووجود معلمة خارج من بلدي StructLayout.Sequential PROPERTYKEY في بلدي المجمع --- يعمل على ما يرام، من جانب الطريق.

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

المحلول

ويجب أن تحقق من http://code.msdn.microsoft.com/WindowsAPICodePack . لديه دعم للدول المستهلكة نظام الملكية ويندوز، وحفنة من القدرات الأخرى النوافذ قذيفة. وأعتقد أنه هو بالضبط ما كنت أبحث عنه.

نصائح أخرى

حسنا، ها هي نسخة من MS.Internal.Interop (مجموعة نفيسة من المعرفة):

[StructLayout(LayoutKind.Sequential), FriendAccessAllowed]
internal struct PROPVARIANT
{
    internal VARTYPE vt;
    internal ushort wReserved1;
    internal ushort wReserved2;
    internal ushort wReserved3;
    internal PropVariantUnion union;
}

[FriendAccessAllowed]
internal enum VARTYPE : short
{
    VT_BSTR = 8,
    VT_FILETIME = 0x40,
    VT_LPSTR = 30,
    // etc...
}


[StructLayout(LayoutKind.Explicit), FriendAccessAllowed]
internal struct PropVariantUnion
{
    [FieldOffset(0)]
    internal BLOB blob;
    [FieldOffset(0)]
    internal short boolVal;
    // etc... see MS.Internal.Interop for full definition
}

وهذه التعاريف سوف تساعدك على التأكد من الهياكل الخاصة بك هي على الأقل صحيحة. أما بالنسبة للمشاكل الأخرى الخاصة بك، وأنا لا أملك جوابا.

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