سؤال

أنا لست جيد جدا مع P / invokook. هل يمكن لأحد أن يقول لي كيف يعلن واستخدم وظيفة shell32.dll التالية في .NET؟

من http://msdn.microsoft.com/en-us/library/bb762230٪28VS.85٪29.aspx.:

HRESULT SHMultiFileProperties(      
    IDataObject *pdtobj,
    DWORD dwFlags
);

إنه لعرض مربع حوار خصائص Windows Shell لكائنات نظام ملفات متعددة.

أنا بالفعل اكتشفت كيفية استخدام shobjectproperties لملف واحد أو مجلد:

[DllImport("shell32.dll", SetLastError = true)]
static extern bool SHObjectProperties(uint hwnd, uint shopObjectType, [MarshalAs(UnmanagedType.LPWStr)] string pszObjectName, [MarshalAs(UnmanagedType.LPWStr)] string pszPropertyPage);

public static void ShowDialog(Form parent, FileSystemInfo selected)
{
    SHObjectProperties((uint)parent.Handle, (uint)ObjectType.File, selected.FullName, null));
}

enum ObjectType
{
    Printer = 0x01,
    File = 0x02,
    VoumeGuid = 0x04,
}

هل أستطيع مساعدتك؟

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

المحلول

هناك idataobject. واجهة و dataobject. فئة في الإطار .NET.

[DllImport("shell32.dll", SetLastError = true)]
static extern int SHMultiFileProperties(IDataObject pdtobj, int flags);

public static void Foo()
{
    var pdtobj = new DataObject();

    pdtobj.SetFileDropList(new StringCollection { @"C:\Users", @"C:\Windows" });

    if (SHMultiFileProperties(pdtobj, 0) != 0 /*S_OK*/)
    {
        throw new Win32Exception();
    }
}

تعديل: لقد قمت فقط بتجميعها واختبرت هذا وتعمل (ينبثق بعض مربع الحوار مع إعدادات مظهر المجلد).

نصائح أخرى

ربما أقرأك سؤال بشكل غير صحيح، لكنني أعتقد أنك تبحث عن خصائص الملفات الموسعة للملفات. أي فتح مستكشف Windows وعرض الأعمدة مثل السمات، المالك، حقوق الطبع والنشر، الحجم، تاريخ إنشاء الخ؟

هناك API في Shell32 يسمى GetDetailsof من سيوفر هذه المعلومات. مقال ابتداء على CodeProject. هتاف، جون

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