Здравствуйте, появилась идея сделать GUI для загрузки с флешки в qemu. В курсе про MobaLiveCD, но там нет настроек.
пока реализовал проверку пути до qemu.exe и проверку подключения флешки.
Не могу понять, как получить порядковый номер флешки. Т.е.: DeviceID=\\.\PHYSICALDRIVE1 или Index.
вот что есть:
формат qemu: qemu.exe -L . -m 724 -boot c -hda \\.\PhysicalDrive1 -localtime -M pc
Спасибо.
пока реализовал проверку пути до qemu.exe и проверку подключения флешки.
Не могу понять, как получить порядковый номер флешки. Т.е.: DeviceID=\\.\PHYSICALDRIVE1 или Index.
вот что есть:
Код:
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <Array.au3>
Local $hGui, $msg, $BtnOk, $sText
$exe="\qemu-system-x86_64.exe"
$Title="QFB"
$hGui = GUICreate("QFB", 380, 360, @DesktopWidth / 2 - 190, @DesktopHeight / 2 - 80, -1, $WS_EX_ACCEPTFILES)
GUICtrlCreateLabel("Укажите путь до каталога, где находится Qemu:", 10, 10)
$PathQemu = GUICtrlCreateInput('', 10, 35, 360, 25) ; принимает перетаскиваемые в Input файлы (drag and drop)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
$BtnPath = GUICtrlCreateButton("Указать путь", 15, 68, 100, 26)
GUICtrlCreateLabel("Укажите букву, под которой определилась флешка:", 10, 110)
$PathFlash = GUICtrlCreateInput('', 10, 135, 360, 25) ; принимает перетаскиваемые в Input файлы (drag and drop)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
$BtnFlash = GUICtrlCreateButton("Указать флешку", 15, 168, 120, 26)
$BtnOk = GUICtrlCreateButton("OK", (380 - 70) / 2, 330, 70, 26)
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $BtnOk
$InputText=GUICtrlRead($PathQemu)
$InputFlash=GUICtrlRead($PathFlash)
If $InputText <> "" And $InputFlash <> "" Then
ChkPath()
ChkFlash()
ElseIf $InputText = "" Then
MsgBox(4096,$Title,"Введите путь до Qemu или укажите с помощью кнопки 'Указать путь'")
ElseIf $InputFlash="" Then
MsgBox(4096,$Title,"Введите букву флешки или укажите ее с помощью кнопки 'Указать флешку'")
EndIf
Case $BtnPath
SelectPath()
Case $BtnFlash
SelectFlash()
EndSwitch
WEnd
Func ChkPath()
$InputText=GUICtrlRead($PathQemu)
If $InputText <> "" Then
$QemuExe=$InputText & $exe
if FileExists($QemuExe)=0 Then
MsgBox(4096,$Title,"В указанном каталоге: " & $InputText & " не найден исполняемый файл: " & $exe)
Else
MsgBox(4096,$Title,"Путь до qemu: " & $QemuExe)
EndIf
EndIf
EndFunc
Func SelectPath()
$Path = FileSelectFolder('Укажите каталог, где установлен Qemu', '', 3, @DesktopDir, $hGui)
if @error = 1 Then
Exit
EndIf
GUICtrlSetData($PathQemu,$Path)
#cs
$QemuExe=$Path & $exe
if FileExists($QemuExe)=0 Then
MsgBox(4096,$Title,"В указанном каталоге не найден исполняемый файл: " & $exe)
ElseIf FileExists($QemuExe) Then
MsgBox(4096,$Title,"Путь до qemu: " & $QemuExe)
EndIf
#ce
EndFunc
Func ChkFlash()
$InputFlash=GUICtrlRead($PathFlash)
If $InputFlash <> "" Then
$avArray = DriveGetDrive("REMOVABLE")
If @error Then Exit
$InputFlash = StringMid($InputFlash, 1, 1)
$iIndex = _ArraySearch($avArray, $InputFlash, 0, 0, 0, 1)
If @error Then
MsgBox(4096, $Title, "Съемный диск: " & $InputFlash & " не найден")
Else
MsgBox(4096, $Title, "Съемный диск: " & $InputFlash & " найден")
EndIf
EndIf
EndFunc
Func SelectFlash()
$Path = FileSelectFolder('Укажите съемное устройство, для загрузки:', '', 3, @DesktopDir, $hGui)
if @error = 1 Then
Exit
EndIf
GUICtrlSetData($PathFlash,$Path)
EndFunc
формат qemu: qemu.exe -L . -m 724 -boot c -hda \\.\PhysicalDrive1 -localtime -M pc
Спасибо.