2011-08-26 32 views
0

我有一個示例應用程序,我想在其中選擇一個文件夾。爲此,我使用了SHBrowseForFolder()。但在Vista中它不會工作。所以我使用了IFileOpenDialog。如果操作系統版本是XP我使用SHBrowseForFolder()否則我使用IFileOpenDialog。IFileOpenDialog無法在XP中啓動

我的應用程序在Vista中工作正常。但它將無法在XP中啓動。

請讓我知道我需要做的任何事情。

更新:

我認爲,這是因爲IFileOpenDialog接口的不行。 我正在使用SHCreateItemFromParsingName()API來設置瀏覽時的默認文件夾。 Shell32.dll在XP中不包含入口點。所以我面臨這個問題。

爲了解決這個問題,我使用LoadLibrary和GetProcAddres()來獲取Proc地址。

現在我可以運行該應用程序。

+0

您是否在調用SHBrowseForFolder之前初始化COM?像往常一樣,張貼一些代碼會大大增加獲得相關和有用答案的機會。 – john

+0

「在Vista中它不會工作」,這到底意味着什麼? SHBrowseFolder對Vista來說工作得很好,GetLastError()的價值是什麼? – pezcode

回答

2

我們的產品使用SHBrowserForFolder在Vista/7上沒有問題。你有什麼代碼的功能? GetLastError()返回什麼?也許我們可以在那裏找到問題。

1

爲了回答直接的問題,IFileOpenDialog在XP中不可用,這就是爲什麼它失敗了。 XP的等效API是GetOpenFileName。