powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / GETENV("ProgramFiles")
7 сообщений из 7, страница 1 из 1
GETENV("ProgramFiles")
    #32319312
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, почему не всегда (не на всех машинах) срабатывает

? GETENV("ProgramFiles")

Зависит ли єто от винды?
...
Рейтинг: 0 / 0
GETENV("ProgramFiles")
    #32319638
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AFAIK эта ф-ция дерет значения по пути
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment
соот чтоб наботало на фсех ОСях добавь переменны среды руками. Для НТ это делаеца через свойства системы в Вынях9х - в Autoexec'е через SET
...
Рейтинг: 0 / 0
GETENV("ProgramFiles")
    #32320015
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И всё же, как мне узнать где папка Program Files ?

Для Win9x можно в Autoexec прописать
Set ProgramFiles=C:\Program Files
Но как быть уверенным, что они на диске С?
В Win2000 есть переменная SystemDrive, а в 9x такой нет.
Всегда ли правильно
SystemDrive=SubStr(GetEnv("WinDir",1,3))
ProgramFiles=SystemDrive+"Program Files" ?
...
Рейтинг: 0 / 0
GETENV("ProgramFiles")
    #32320079
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
#define CSIDL_PROGRAM_FILES   0x26        && C:\Program Files
#define S_OK                      0  
#define MAX_PATH                260 

DECLARE Integer SHGetPathFromIDList IN shell32.dll ;
Integer pidl, String @ pszPath
DECLARE Integer SHGetSpecialFolderLocation IN shell32.dll ;
Integer hwndOwner, Integer nFolder, Integer @ pidl
DECLARE CoTaskMemFree IN ole32.dll Integer pv

LOCAL pidl
LOCAL lcPath
pidl= 0 
lcPath=SPACE(MAX_PATH)
IF SHGetSpecialFolderLocation( 0 , CSIDL_PROGRAM_FILES, @pidl) = S_OK
    IF SHGetPathFromIDList(pidl, @lcPath)= 1 
    	lcPath= LEFT(lcPath,AT(CHR( 0 ),lcPath)- 1 )
    ENDIF 
    =CoTaskMemFree(pidl)
ENDIF 
?lcPath
...
Рейтинг: 0 / 0
GETENV("ProgramFiles")
    #32320168
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работает только под NT (у меня Win2k), в Win9x не хочет... :(
А откуда #define CSIDL_PROGRAM_FILES 0x26?

В SHLOBJ.H
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
// -------------------------------------------------------------------------
 
//
// SHGetSpecialFolderLocation
//
//  Caller should use SHGetMalloc to obtain an allocator that can free the pidl
//  
//
// -------------------------------------------------------------------------
 
//
// registry entries for special paths are kept in :
#define REGSTR_PATH_SPECIAL_FOLDERS    REGSTR_PATH_EXPLORER TEXT( "\\Shell Folders" )

#define CSIDL_DESKTOP                   0x0000
#define CSIDL_INTERNET                  0x0001
#define CSIDL_PROGRAMS                  0x0002
#define CSIDL_CONTROLS                  0x0003
#define CSIDL_PRINTERS                  0x0004
#define CSIDL_PERSONAL                  0x0005
#define CSIDL_FAVORITES                 0x0006
#define CSIDL_STARTUP                   0x0007
#define CSIDL_RECENT                    0x0008
#define CSIDL_SENDTO                    0x0009
#define CSIDL_BITBUCKET                 0x000a
#define CSIDL_STARTMENU                 0x000b
#define CSIDL_DESKTOPDIRECTORY          0x0010
#define CSIDL_DRIVES                    0x0011
#define CSIDL_NETWORK                   0x0012
#define CSIDL_NETHOOD                   0x0013
#define CSIDL_FONTS                     0x0014
#define CSIDL_TEMPLATES                 0x0015
#define CSIDL_COMMON_STARTMENU          0x0016
#define CSIDL_COMMON_PROGRAMS           0X0017
#define CSIDL_COMMON_STARTUP            0x0018
#define CSIDL_COMMON_DESKTOPDIRECTORY   0x0019
#define CSIDL_APPDATA                   0x001a
#define CSIDL_PRINTHOOD                 0x001b
#define CSIDL_ALTSTARTUP                0x001d         // DBCS
#define CSIDL_COMMON_ALTSTARTUP         0x001e         // DBCS
#define CSIDL_COMMON_FAVORITES          0x001f
#define CSIDL_INTERNET_CACHE            0x0020
#define CSIDL_COOKIES                   0x0021
#define CSIDL_HISTORY                   0x0022

WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, int nFolder, LPITEMIDLIST * ppidl);

#if (_WIN32_IE >= 0x0400)

WINSHELLAPI BOOL WINAPI SHGetSpecialFolderPathA(HWND hwndOwner, LPSTR lpszPath, int nFolder, BOOL fCreate);
WINSHELLAPI BOOL WINAPI SHGetSpecialFolderPathW(HWND hwndOwner, LPWSTR lpszPath, int nFolder, BOOL fCreate);
#ifdef UNICODE
#define SHGetSpecialFolderPath  SHGetSpecialFolderPathW
#else
#define SHGetSpecialFolderPath  SHGetSpecialFolderPathA
#endif

#endif      // _WIN32_IE >= 0x0400

нет такой константы.
...
Рейтинг: 0 / 0
GETENV("ProgramFiles")
    #32320255
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая константа
CSIDL_PROGRAM_FILES (0x0026)
Version 5.0. The Program Files folder. A typical path is C:\Program Files.


Попробуй так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
#define CSIDL_PROGRAM_FILES   0x26        && C:\Program Files
#define S_OK                      0  
#define MAX_PATH                260 

DECLARE Integer SHGetFolderPath IN shfolder.dll ;
Integer hwndOwner, ;
Integer nFolder, ;
Integer hToken, ;
Integer dwFlags, ;
String @ pszPath

lcPath=SPACE(MAX_PATH)
IF SHGetFolderPath( 0 , CSIDL_PROGRAM_FILES,  0 ,  0 , @lcPath)=S_OK
	lcPath= LEFT(lcPath,AT(CHR( 0 ),lcPath)- 1 )
ENDIF 
?lcPath


Если не получится, то надо обновлять IE. Возможно, тогда и через GETENV() будет работать.
...
Рейтинг: 0 / 0
GETENV("ProgramFiles")
    #32320361
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работает, спасибо! :))
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / GETENV("ProgramFiles")
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]