C++ 如何获取右键单击事件对象文件名?

C++ 如何获取右键单击事件对象文件名?,c++,windows,com,atl,explorer,C++,Windows,Com,Atl,Explorer,我创建了一个ATL/COM项目,并实现了IShellExtInit接口。在Initialize方法中,我使用DrapDropFile函数获取在文件夹中选择的文件的文件名 e、 g 1.文件夹C:\WINDOWS\MyFolder\中包含以下文件: a.png, b.bmp, c.jpg 2.右键单击“b.bmp” 3.在Initialize方法中,我得到一个文件名列表 fileNames[0] = C:\WINDOWS\MyFolder\b.bmp fileNames[1] = C:\WIN

我创建了一个ATL/COM项目,并实现了IShellExtInit接口。在Initialize方法中,我使用DrapDropFile函数获取在文件夹中选择的文件的文件名

e、 g

1.文件夹C:\WINDOWS\MyFolder\中包含以下文件:

a.png, b.bmp, c.jpg
2.右键单击“b.bmp”

3.在Initialize方法中,我得到一个文件名列表

fileNames[0] = C:\WINDOWS\MyFolder\b.bmp

fileNames[1] = C:\WINDOWS\MyFolder\c.jpg

fileNames[2] = C:\WINDOWS\MyFolder\a.png
问题:

如何获取文件的实际顺序。(a/b/c而不是b/c/a)

期望:

1.右键单击“b.bmp”

2.右键单击“a.png”


单击的项目总是第一个。其余项目的顺序未定义且不确定。

您可以按照源文件填充IDataObject的任何顺序获取文件;除了在目标端执行您自己的排序之外,我认为您对此无能为力。我需要实际单击的对象。我认为资源管理器将所选对象作为IDataObject中的第一项传入(已经有一段时间了,所以我可能错了)。无论如何,我不认为有一个简单的方法可以做到这一点。我能想到的唯一一件事就是尝试找到相关文件夹的IShellFolderView(或任何东西),并尝试确定该文件夹中的焦点对象。
I get the file name: C:\WINDOWS\MyFolder\a.png
I get the file name: C:\WINDOWS\MyFolder\a.png