* m_tip - ключ для получения ответа
* 1 - только список дисков
* 2 - список и тип диска
DIMENSION adrivenames[32],adrivetypes[7], aspdrive[32]
adrivenames[1]='A:'
adrivenames[2]='B:'
adrivenames[3]='C:'
adrivenames[4]='D:'
adrivenames[5]='E:'
adrivenames[6]='F:'
adrivenames[7]='G:'
adrivenames[8]='H:'
adrivenames[9]='I:'
adrivenames[10]='J:'
adrivenames[11]='K:'
adrivenames[12]='L:'
adrivetypes[6]='CD-ROM'
adrivetypes[7]='RAM - DISK'
DECLARE INTEGER GetLogicalDrives IN Win32API
DECLARE INTEGER GetDriveType IN Win32API STRING @
ibitmask=getlogicaldrives()
? 'Имеющиеся в системе дисковые устройства:'
* в массиве aspdrive[jj] получаем список доступных дисков
jj=0
FOR i=0 TO 25
IF BITTEST(ibitmask,i)
IF TYPE(adrivenames[I+1])#"L"
jj=jj+1
DO CASE
CASE m_tip=1
aspdrive[jj] = adrivenames[I+1]
т.е DECLARE INTEGER GetLogicalDriceString in win32api as DS INTEGER
Size, STRING @ DriveString
DriveString=SPACE(200)
DS(200,DriveString)
Пролучишь в DS строку, где диски разделены нулевым символом и сама строка им заканчивается т.е
что-то вроде "A:\"+CHR(0)+"C:\"+CHR(0)+"D:\"+CHR(0)+CHR(0)
Может надо будет вызывать как DS(200,@DriveString) т.е может нужна ссылка на ссылку.
Подробности смотри в Win32 SDK.
Best regards, Alexander
mailto:avm@sci.yakutia.ru
Текущая оценка: (4.826)
Дополнения пользователей Определение доступных в системе дисков