Menggunakan windows/shell api (atl ok), mengingat PIDL folder, apa cara tercepat untuk memeriksa apakah ada file di folder itu?

-1
dfu31939 2 Juli 2020, 02:10

1 menjawab

Jawaban Terbaik

Tidak yakin apakah ini cara tercepat, tetapi cukup mudah:

Konversikan PIDL ke IShellFolder (jika Anda belum memilikinya) menggunakan SHGetDesktopFolder() dan IShellFolder::BindToObject(), atau cukup SHBindToObject(), atau fungsi terkait lainnya. Dan kemudian panggil folder IShellFolder::ParseDisplayName() (dan, jika perlu, IShellFolder::GetAttributesOf()) untuk nama file anak. Jika terjadi kesalahan, file tidak ada.

Atau, konversi PIDL ke IShellItem (jika Anda belum memilikinya) menggunakan SHCreateItemFromIDList(), lalu gunakan SHCreateItemFromRelativeName() (dan, jika perlu, IShellItem::GetAttributes(SFGAO_VALIDATE)) untuk nama file anak. Sekali lagi, jika terjadi kesalahan (atau atribut tidak divalidasi), file tidak ada.

0
Remy Lebeau 2 Juli 2020, 00:27