在GetOpenFileName对话框中获取PIDL的项目

时间:2011-03-20 15:18:45

标签: c# winapi

我有一个implementation CommonDialog,允许用户多选文件文件夹。只要未检查资源管理器设置“隐藏已知文件类型的扩展名”(默认选中),该类就可以正常工作。如果已选中(已知扩展名不再是文件名的一部分),则它不起作用,因为我直接从列表视图项中获取所选文件和文件夹名称(LVM_GETITEMTEXT)。

我找到了一个描述C ++解决方案的MSDN magazine article。我们的想法是从包含完整文件名的所选项目中获取支持PIDL对象,包括独立于资源管理器设置的扩展名。

知道如何将其移植到C#?

1 个答案:

答案 0 :(得分:-1)

获取pidl的代码..

lvitem lvi;
lvi.mask = lvif_param; //0x0004;
lvi.iItem = 1;// the index of item u want to get
sendmessage(listviewhandle,LVM_GETITEM,0,ref lvi);

//Now u can get pidl from lvi.lParam member.