EnglishРусский  

   ..

   winfolders.g

The project is closed! You can look at a new scripting language. It is available on GitHub.
Also, try our open source cross-platform automation software.

Ads

Installer and installation software
Commercial and Freeware installers.

source\lib\windows\winfolders.g
  1 /*<winfolders>   
  2    <copyright year = 2006>
  3       <company = 'Gentee, Inc.'  url = 'http://www.gentee.com'  email = info@gentee.com >
  4       <author = 'Alexey Krivonogov'> 
  5       <file>
  6       </>
  7    </>
  8    <desc>
  9    </>
 10 </>*/
 11 
 12 import "kernel32.dll"
 13 {
 14 //   uint GetDiskFreeSpaceExA( uint, uint, uint, uint ) -> GetDiskFreeSpaceEx 
 15    uint GetSystemDirectoryA( uint, uint ) -> GetSystemDirectory
 16    uint GetTempPathA( uint, uint ) -> GetTempPath
 17    uint GetWindowsDirectoryA( uint, uint ) -> GetWindowsDirectory
 18 }
 19 
 20 import "shell32.dll"
 21 {
 22    uint SHGetSpecialFolderLocation( uint, uint, uint ) 
 23    uint SHGetPathFromIDListW( uint, uint ) -> SHGetPathFromIDList
 24 }
 25 
 26 import "ole32.dll" {
 27 uint CoTaskMemAlloc( uint )
 28      CoTaskMemFree( uint )
 29 }
 30 
 31 define <export> 
 32 {  
 33    WINFLD_SIZE = 512  // Reserved size for folders
 34    // values for idfolder parameter of the function winfolder
 35    WINFLD_WIN = 0xFF00    // Windows directory
 36    WINFLD_SYS             // System directory
 37    WINFLD_TEMP            // Temporary directory
 38    WINFLD_QLAUNCH         // Quick Launch folder          
 39    WINFLD_SENDTO     = 0x0009  // "Sendto" folder
 40    WINFLD_MYMUSIC    = 0x000D  // "My Music" folder
 41    WINFLD_MYVIDEO    = 0x000E  // "My Videos" folder
 42    WINFLD_APPDATA    = 0x001a   // Application Data
 43    WINFLD_LOCALAPPDATA = 0x001c   // Application Data
 44    WINFLD_COMAPPDATA = 0x0023
 45    WINFLD_DESKTOP    = 0x0010   // Desktop folder
 46    WINFLD_COMDESKTOP = 0x0019   // Desktop folder
 47    WINFLD_PROGFILES  = 0x0026   // Program Files directory
 48    WINFLD_MYPICTURES = 0x0027   // "My Pictures" folder   
 49    WINFLD_COMPROGFILES = 0x002b // Common Program Files directory
 50    WINFLD_PROGGROUP    = 0x0002 // Start -> Programs folder
 51    WINFLD_COMPROGGROUP = 0x0017
 52    WINFLD_START        = 0x000b // Start menu folde
 53    WINFLD_COMSTART     = 0x0016
 54    WINFLD_STARTUP      = 0x0007 // StartUp folder
 55    WINFLD_COMSTARTUP   = 0x0018
 56    WINFLD_FONT         = 0x0014 // Fonts folder
 57    WINFLD_DOCS       = 0x0005  // My Documents folder
 58    WINFLD_COMDOCS    = 0x002e
 59    WINFLD_COMMUSIC   = 0x0035  // All Users\My Music
 60    WINFLD_COMPICTURES = 0x0036 // All Users\My Pictures
 61    WINFLD_COMVIDEO    = 0x0037 // All Users\My Video
 62    WINFLD_IEFAV      = 0x0006  // Internet Explorer Favorite folder
 63    WINFLD_COMIEFAV   = 0x001f
 64    WINFLD_COOKIES    = 0x0021
 65    WINFLD_HISTORY    = 0x0022
 66    WINFLD_DRIVES     =  0x0011 // My Computer
 67    WINFLD_NETWORK    =  0x0012 // Network Neighborhood (My Network Places)
 68 }
 69 
 70 func str winfolder( uint idfolder, str result )
 71 {
 72    uint ptr
 73    uint qlaunch 
 74    
 75    result.clear()
 76    result.reserve( $WINFLD_SIZE )
 77    ptr = result.ptr()
 78    
 79    if idfolder == $WINFLD_WIN : GetWindowsDirectory( ptr, $WINFLD_SIZE )
 80    elif idfolder == $WINFLD_SYS : GetSystemDirectory( ptr, $WINFLD_SIZE )
 81    elif idfolder == $WINFLD_TEMP : GetTempPath( $WINFLD_SIZE, ptr )
 82    else 
 83    {
 84       uint  ids 
 85       
 86       if idfolder == $WINFLD_QLAUNCH
 87       {
 88          idfolder = $WINFLD_APPDATA
 89          qlaunch = 1 
 90       }  
 91       if !SHGetSpecialFolderLocation( 0, idfolder, &ids )
 92       {
 93          ustr uptr
 94          
 95          uptr.reserve( 1024 )
 96 //         ptr = uptr.ptr()
 97          SHGetPathFromIDList( ids, uptr.ptr() )
 98          uptr.setlenptr()
 99          result = uptr
100          CoTaskMemFree( ids )//imalloc_free( ids )      
101       } 
102    }
103    result.setlenptr().fdelslash()
104    if qlaunch : result.faddname( $"Microsoft\Internet Explorer\Quick Launch" )
105    return result   
106 }
107 /*
108 func long getdisksize( str path, uint ptotal )
109 {
110    long result
111    
112    if !GetProcAddress( GetModuleHandle( "kernel32.dll".ptr() ),
113                          "GetDiskFreeSpaceExA".ptr())
114    {
115       return 0L
116    }
117    GetDiskFreeSpaceEx( path.ptr(), &result, ptotal, 0 )
118    
119    return result   
120 }
121 */