Получение сбоя внутри SHBrowseForFolder () - PullRequest
1 голос
/ 08 июня 2009

Я получаю сбой внутри 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 ]

1 голос
/ 08 июня 2009

Вы звоните CoInitialize?

0 голосов
/ 09 июня 2009

Одной из причин является то, что szDisplayName не имеет нулевого завершения!

0 голосов
/ 08 июня 2009

Каков характер аварии? Мы говорим об исправимой ошибке или необработанном исключении микросхемы, таком как нарушение доступа? Функции ShBrowse обычно вызывают проводник в некотором роде - это сбой проводника? Возможно, это вызвано каким-то дополнением оболочки? Вы сначала инициализировали COM? Может быть, какой-то внешний фактор, такой как антивирус?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...