¿ Tienes idea por qué el siguiente código para conocer las carpetas del SO, funciona, pero si la llamo varias veces, al final da una especie de gpf como con el problema del curdir() del anterior mensaje. ?
Creo que tiene relación con la función WideToAnsi, pero no encuentro qué puede ser. Adjunto el código problemático:
- Code: Select all Expand view RUN
- HB_FUNC( CESPECIALFOLDERDOMI )
{
LPTSTR lpszPath = ( LPTSTR ) hb_xgrab( MAX_PATH );
LPSTR pAnsi;
BOOL bRet ;
// (HWND) GetActiveWindow()
bRet = SHGetSpecialFolderPath( NULL, lpszPath , (INT) hb_parni(1) , 0 );
hb_retl( (BOOL) bRet );
if ( bRet )
{
pAnsi = WideToAnsi( ( LPWSTR ) lpszPath );
if ( ISBYREF( 2 ) ) // Quitamos el Null del final
hb_storclen( ( char * ) pAnsi, MAX_PATH, 2 ) ;
hb_xfree( pAnsi );
}
else
{
if ( ISBYREF( 2 ) ) // Mandamos cadena vacía
hb_storclen( ( char * ) lpszPath, 0 , 2 ) ;
}
hb_xfree( lpszPath );
}