Тема: Zinc FAQ
Показать сообщение отдельно
Старый 27.11.2007, 23:34
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 5  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Получить список логических дисков

Код:
this.createTextField("driveList", 1, 20, 20, 200, 300);
driveList.text="Список логических дисков:"+ newline;
// подключаем системную DLL kernek32.dll
var kernel32 = new mdm.DLL(mdm.System.Paths.windows + "\\system32\\kernel32.dll");
//и вызываем API-функцию GetLogicalDrives из этой библиотеки.
// в оригинале она выглядит так DWORD GetLogicalDrives(VOID)
var numDrives:Number = 1 * kernel32.call("integer", "GetLogicalDrives");
// отключаем DLL
kernel32.close();
// анализируем результат
var driveLettersMask:Array = numDrives.toString(2).split("");
startChar = 65 + (driveLettersMask.length - 1);
// добавляем в список логические диски системы
for (i = driveLettersMask.length - 1; i >= 0; i--) {
	if (driveLettersMask[i] == "1") {
		var driveLetter:String = String.fromCharCode(startChar - i);
		driveList.text += "Диск " + driveLetter + ":" + newline;
	}
}
Здесь вызывается API-функция GetLogicalDrives(), которая возвращает число, двоичное представление которого служит маской для букв дисков
по принципу
0000000000001101
...................DCBA
1 - соответствует наличию диска с буквой, 0 - отсутствует диск с такой буквой.
В примере видно, что есть диски A, C и D.


Последний раз редактировалось alexcon314; 28.11.2007 в 22:12.