Путь к Моим документам
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2  Next  :| |:
-> Программирование в БЭСТ-4

#1: Путь к Моим документам Author: Дениска PostPosted: 01 Oct 2007 17:19
    —
Как в БЭСТ-е получить путь до "Мои документы" под ВинХР?

#2:  Author: nordkLocation: Горбунов Константин PostPosted: 01 Oct 2007 18:54
    —
О каком БЭСТе идет речь ?

#3:  Author: greyLocation: Родионов С.Г. PostPosted: 01 Oct 2007 21:37
    —
В общем случае
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

параметр personal

#4:  Author: Дениска PostPosted: 02 Oct 2007 04:53
    —
nordk wrote:
О каком БЭСТе идет речь ?


Речь идет о Б5 3.3 СП32 и о Б4+12.01 СП39, которые стоят под WinXP SP2

#5:  Author: Дениска PostPosted: 02 Oct 2007 05:46
    —
grey wrote:
В общем случае
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

параметр personal


Спасибо! Осталось только выяснить, как в БЭСТ-е это значение получить ...

#6:  Author: nordkLocation: Горбунов Константин PostPosted: 02 Oct 2007 11:15
    —
Code:
GetRegistry( nHKEYHandle, cKeyName, cEntryName )

#7:  Author: nordkLocation: Горбунов Константин PostPosted: 02 Oct 2007 11:23
    —
Виноват
Похоже функции Winreg* отсутствуют в харборе БЭСТа

#8:  Author: Дениска PostPosted: 02 Oct 2007 16:52
    —
nordk wrote:
Виноват
Похоже функции Winreg* отсутствуют в харборе БЭСТа


Я правильно понял, что функция GetRegistry в БЭСТ-е не работает? А можно ее включить в БЭСТ в ближайших пакетах? Хотя бы в БЭСТ5 для начала ... Или можно другим способом путь до "Моих документов" получить?

#9:  Author: Титов АлександрLocation: Титов Александр Александрович PostPosted: 02 Oct 2007 17:18
    —
Дениска wrote:
nordk wrote:
Виноват
Похоже функции Winreg* отсутствуют в харборе БЭСТа


Я правильно понял, что функция GetRegistry в БЭСТ-е не работает? А можно ее включить в БЭСТ в ближайших пакетах? Хотя бы в БЭСТ5 для начала ... Или можно другим способом путь до "Моих документов" получить?

Добрый день!
Попробуйте на таком примере (чтение номера SP в БЭСТе):
Code:

#define HKEY_LOCAL_MACHINE  0x80000002
#define HKEY_CLASSES_ROOT   0x80000000
#define HKEY_USERS          0x80000003
#define HKEY_CURRENT_USER   0x80000001
#define HKEY_NO_KEY         0x00000000
#define KEY_READ                0x20019
#define REG_SZ                       1
#define REG_DWORD                    4

cRegKey:="SOFTWARE\BEST\BEST5\33"
hKey := 0
vName:="SP"
vtype := 0
vdata := 0
vcbdata := 0


if REGOPENKEYEX(HKEY_LOCAL_MACHINE,cRegKey, 0, KEY_READ, @hKey) !=  0 //только на чтение
     REGQUERYVALUEEX(hKey, vName, 0, @vtype, @vdata, @vcbdata)
endif

     DO CASE
     CASE vtype == REG_SZ
        vData := SUBSTR( vData, 1, vcbdata - 1 )
     CASE vtype == REG_DWORD
        vData := BIN2L( vData )
     ENDCASE

RETURN vData





#10:  Author: Дениска PostPosted: 04 Oct 2007 07:27
    —
Спасибо! С помощью REGOPENKEYEX и REGQUERYVALUEEX путь получен Только в Б4 эти функции не работают, но в данный момент для меня это не принципиально.

Подскажите, а где в Б5 надо писать #define?

#11:  Author: nordkLocation: Горбунов Константин PostPosted: 04 Oct 2007 10:24
    —
Как и в БЭСТ-4 в начале исходника (до FUNCTION)

#12:  Author: BehemothLocation: Новиков Алексей Юрьевич PostPosted: 23 Oct 2007 20:33
    —
Дениска wrote:
Только в Б4 эти функции не работают, но в данный момент для меня это не принципиально.

А мне вот понадобилось. Так как в БЭСТ-4+ получить путь к папке "Мои документы"? Нет, я конечно могу с помощью regedit экспортировать весь раздел, а затем проанализировать текстовый файл. Но как-то это некрасиво.

#13:  Author: EJLocation: цЙМЕОЛП еЧЗЕОЙК аТШЕЧЙЮ PostPosted: 24 Oct 2007 08:22
    —
Можно создать системную переменную, а чтобы "не промазать", указать в ней путь тоже с использованием переменных, например
set MyDocuments=%HomeDrive%\%HomePath%\Мои документы или для 98-го вообще "в наглую"
set MyDocuments=C:\Мои документы
Вообще-то она может и самой операционкой создаваться, не помню , и если так, то выглядит типа "MyDocuments"( %MyDocuments% ).

#14:  Author: greyLocation: Родионов С.Г. PostPosted: 24 Oct 2007 09:46
    —
Behemoth wrote:
Дениска wrote:
Только в Б4 эти функции не работают, но в данный момент для меня это не принципиально.

А мне вот понадобилось. Так как в БЭСТ-4+ получить путь к папке "Мои документы"? Нет, я конечно могу с помощью regedit экспортировать весь раздел, а затем проанализировать текстовый файл. Но как-то это некрасиво.


Можно попробовать так:
Ложим в bin эту dll:
grey-soft.narod.ru/winreg.dll

stdcall функция getpersonal возвращает значение нужного ключа реестра.

Вызвать dll можно с помощью следующего кода

#define DC_CALL_STD 0x0020 // __stdcall
Local hDLL, pAddr, err;
hDll := Loadlibrary("winreg.dll");
pAddr := GetProcAddress(hDll,"getpersonal",);
calldll(hDll,pAddr,DC_CALL_STD,,);
FreeLibrary(hdll);

Еще бы кто-нибудь подсказал, как получить значение возвращаемое функцией

#15:  Author: BehemothLocation: Новиков Алексей Юрьевич PostPosted: 24 Oct 2007 10:46
    —
Добрый день.
grey wrote:

Еще бы кто-нибудь подсказал, как получить значение возвращаемое функцией

Значение, возвращаемое функцией отлично получается. Только оно равно nil.



-> Программирование в БЭСТ-4


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2  Next  :| |:
Page 1 of 2

Powered by phpBB © 2001, 2005 phpBB Group