Piscicelli Zingoni wrote:Hi, i forgot how to detect the standard folder programs, example C:\PROGRAMS (english) or
C:\PROGRAMMI (ITALIAN)
#define HKEY_CURRENT_USER 2147483649
#define HKEY_LOCAL_MACHINE 2147483650
#define KEY_ALL_ACCESS 983103
FUNCTION GETDESKDIR()
LOCAL hKey := 0
LOCAL nType := 0
LOCAL cData := SPACE( 256 )
LOCAL nSize := LEN( cData )
REGOPENKEY( HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", 0, KEY_ALL_ACCESS, @hKey )
REGQUERYVALUE( hKey, "Desktop", 0, @nType, @cData, @nSize )
REGCLOSEKEY( hKey )
RETURN LEFT( cData, AT( CHR( 0 ), cData ) - 1 )
FUNCTION GETPROGDIR()
LOCAL hKey := 0
LOCAL nType := 0
LOCAL cData := SPACE( 256 )
LOCAL nSize := LEN( cData )
IF !ISWINNT()
REGOPENKEY( HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", 0, KEY_ALL_ACCESS, @hKey )
REGQUERYVALUE( hKey, "Programs", 0, @nType, @cData, @nSize )
ELSE
REGOPENKEY( HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", 0, KEY_ALL_ACCESS, @hKey )
REGQUERYVALUE( hKey, "Common Programs", 0, @nType, @cData, @nSize )
ENDIF
REGCLOSEKEY( hKey )
RETURN LEFT( cData, AT( CHR( 0 ), cData ) - 1 )
DLL32 FUNCTION REGOPENKEY( hKey AS LONG, cSubKey AS LPSTR, nOptions AS DWORD, nSamDesired AS DWORD, @nHandle AS PTR ) AS LONG;
PASCAL FROM "RegOpenKeyExA" LIB "advapi32.dll"
DLL32 FUNCTION REGQUERYVALUE( hKey AS LONG, cValueName AS LPSTR, nReserved AS LONG, @nType AS PTR, @cData AS LPSTR, @nSize AS PTR ) AS LONG;
PASCAL FROM "RegQueryValueExA" LIB "advapi32.dll"
DLL32 FUNCTION REGCLOSEKEY( hKey AS LONG ) AS LONG;
PASCAL FROM "RegCloseKey" LIB "advapi32.dll"
EMG