2010-09-02 106 views
0

我创建了一个ATL/COM项目,并实现了IShellExtInit接口。在Initialize方法中,我使用DrapDropFile函数来获取文件夹中所选文件的文件名。如何获取右键单击事件对象文件名?

例如

1.In文件夹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”。

I get the file name: C:\WINDOWS\MyFolder\a.png 

2.右键单击“a.png”。

I get the file name: C:\WINDOWS\MyFolder\a.png 
+0

您以任何顺序获取源文件填充IDataObject的文件;没有在目标上执行自己的排序,我不认为你可以对此做任何事情。 – Luke 2010-09-02 20:26:46

+0

我需要实际点击的对象。 – 2010-09-04 06:03:16

+0

我认为资源管理器作为IDataObject中的第一个项目传递选定的对象(有一段时间,所以我可能是错的)。无论如何,我认为没有一种简单的方法可以做到这一点。我唯一能想到的就是试图找到相关文件夹的IShellFolderView(或其他),并试图确定该文件夹中的焦点对象。 – Luke 2010-09-06 15:24:38

回答

0

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