在SHBrowseForFolder()内部崩溃

时间:2009-06-08 09:21:45

标签: winapi

我在win32 fn :: SHBrowseForFolder()中遇到了崩溃。 代码如下:

            BROWSEINFO   bi = {0}; 
    TCHAR   szDisplayName[MAX_PATH]; 
    szDisplayName[0]    =   ' ';

    bi.hwndOwner        =   NULL; 
    bi.pidlRoot         =   NULL; 
    bi.pszDisplayName   =   szDisplayName; 
    bi.lpszTitle        =   _T("Please select a folder :"); 
    bi.ulFlags          =   BIF_RETURNONLYFSDIRS;
    bi.lParam           =   NULL; 
    bi.iImage           =   0;  

    LPITEMIDLIST   pidl   =   SHBrowseForFolder(&bi);//crashes

崩溃只发生在一些XP机器上,而不是vista机器上。 请提出一些解决方案。

感谢。

3 个答案:

答案 0 :(得分:1)

您是否正在呼叫CoInitialize?

答案 1 :(得分:0)

坠机的性质是什么?我们是在谈论可恢复的错误,还是未处理的芯片异常,例如访问冲突? ShBrowse函数通常以某种方式调用资源管理器 - 它是崩溃的资源管理器吗?也许是由某种shell插件引起的?你首先初始化了COM吗?也许是一些外部因素,如反病毒?

答案 2 :(得分:0)

一个原因是szDisplayName不是空终止的!