shell32.dll의 shmultifileproperties에 대한 p/호출
문제
나는 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 건배, 존
제휴하지 않습니다 StackOverflow