Что нового

[Файловая система] Как перебрать подключённые флешки в поисках нужной ?

delfin

Новичок
Сообщения
7
Репутация
0
В программе нужна функция проверяющая наличие флешки-ключа
Для этого c помощью DriveGetSerial считывается серийный номер
Пока реализовал это так :
Код:
Func Test_flash($iSerial)
	$bReturn=0
	For $cLetter=Asc("d") To Asc("z")
		If DriveGetType( Chr($cLetter) & ":\" ) = "Removable" Then
			If DriveGetSerial( Chr($cLetter) & ":\" ) = $iSerial Then
				$bReturn=1
				ExitLoop 
			EndIf
		EndIf
	Next
	Return $bReturn
EndFunc

Но решение очень не нравится: нагромождение условных операторов,
использование функций Asc() Chr()
Да и выбор последней буквы диска вызывает сомнение... :(
Можно ли это как то улучшить ?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Сперва получаем массив с извлекаемыми устройствами, а потом проверяем серийный номер:

Код:
Func Test_Flash($iSerial)
	Local $aRemovable_Drives = DriveGetDrive("Removable")
	
	If @error Then
		Return SetError(1, 0, 0)
	EndIf
	
	For $iDrive = 1 To $aRemovable_Drives[0]
		If DriveGetSerial($aRemovable_Drives[$iDrive]) = $iSerial Then
			Return 1
		EndIf
	Next
	
	Return 0
EndFunc
 
Верх