문제

나는 P/Invoke에별로 좋지 않습니다. .NET에서 다음 shell32.dll 함수를 선언하고 사용하는 방법을 말해 줄 수 있습니까?

에서 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 인터페이스 및 a 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 탐색기 열기 및 속성, 소유자, 저작권, 크기, 생성 날짜 등과 같은 열기 열기?

Shell32에는 getDetailsof라는 API가 있으며이 정보를 제공합니다. 시작 기사 CodeProject 건배, 존

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top