viernes, 22 de julio de 2011

Cómo saber el path de carpetas especiales del sistema (escritorio, mis documentos) desde PowerBuilder

Si quieres saber por código la ruta/path de carpetas especiales como el Escritorio, Mis Documentos, Favoritos, etc. desde PowerBuilder Classic puedes conseguirlo mediante el siguiente código:


// Parámetros posibles
//  AllUsersDesktop
//  AllUsersStartMenu
//  AllUsersPrograms
//  AllUsersStartup
//  Desktop
//  Favorites
//  MyDocuments
//  Programs
//  Recent
//  SendTo
//  StartMenu
//  Startup
oleobject  wsstring   ls_desktop

ws = CREATE oleobject
ws.ConnectToNewObject("WScript.Shell")

choose case pi_specialfoldertype
 case 1 //  AllUsersDesktop
  ls_desktop = ws.SpecialFolders("AllUsersDesktop")
 case 2 //  AllUsersStartMenu
  ls_desktop = ws.SpecialFolders("AllUsersStartMenu")
 case 3 //  AllUsersPrograms
  ls_desktop = ws.SpecialFolders("AllUsersPrograms")
 case 4 //  AllUsersStartup
  ls_desktop = ws.SpecialFolders("AllUsersStartup")
 case 5 //  Desktop
  ls_desktop = ws.SpecialFolders("Desktop")
 case 6 //  Favorites
  ls_desktop = ws.SpecialFolders("Favorites")
 case 7 //  MyDocuments
  ls_desktop = ws.SpecialFolders("MyDocuments")
 case 8 //  Programs
  ls_desktop = ws.SpecialFolders("Programs")
 case 9 //  Recent
  ls_desktop = ws.SpecialFolders("Recent")
 case 10 //  SendTo
  ls_desktop = ws.SpecialFolders("SendTo")
 case 11 //  StartMenu
  ls_desktop = ws.SpecialFolders("StartMenu")
 case 12 //  Startup
  ls_desktop = ws.SpecialFolders("Startup")
end choose

Return ls_desktop

La solución propuesta utiliza la librería Windows Script Host, por lo que no es necesario tener instalado ninguna versión del .Net FrameWork (se trabaja con el API Win32).

1 comentario:

  1. Muchas gracias por el codigo, justo en este momento necesitaba obtener la carpeta "mis documentos". De verdad gracias.

    ResponderEliminar