Что нового

Autoit работа с MTP режимом

maxd2007

Новичок
Сообщения
89
Репутация
0
Можно ли на Autoit работать с устройствами подключенными в MTP режиме? Скажем мне нужно скопировать или прочитать фаил с телефона который подключен в MTP, как это можно сделать, если это конечно вообще возможно?
 

Fly01

Новичок
Сообщения
9
Репутация
0
Здравствуйте. Так же интересует этот вопрос. Знаю, что программно можно подключиться к MTP, видел плагины для total commander, но поиск не дал результатов, как это можно сделать через autoit. Уважаемое сообщество, помогите.
 

Fly01

Новичок
Сообщения
9
Репутация
0
Народ, тут столько спецов, неужели никто не знает? В интернете вообще нет информации о том, как получить доступ к телефону по MTP протоколу, помогите кто-нибудь
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
Вот библиотека, но писать вызовы функций из DLL надо самостоятельно.
Я для примера попробовал
Код:
Local $ErrorOutput = DllStructCreate("wchar[128]")
Local $Output = DllStructCreate("wchar[1024]")
Local $DeviceName
; Local Dim $aResult[5]

Local $hDLL = DllOpen("PB.Ex_MTP_x64.dll")
; Local $hDLL = DllOpen("PB.Ex_MTP_x86.dll")
If @error Then
    MsgBox(0, "", "@error")
EndIf
DllCall($hDLL, "int", "ExamineMTP", "ptr", DllStructGetPtr($ErrorOutput))
If @error Then
    MsgBox(0, "ExamineMTP", "@error")
EndIf

; While 1
    $aResult = DllCall($hDLL, "int", "NextMTPEntry", "ptr", DllStructGetPtr($ErrorOutput))
    If @error Then
        MsgBox(0, "NextMTPEntry", "@error")
    EndIf
    ; If $aResult[0] Then
        DllCall($hDLL, "int", "MTPEntryName", "ptr", DllStructGetPtr($Output), "ptr", DllStructGetPtr($ErrorOutput))
        $DeviceName = DllStructGetData($Output, 1)
        MsgBox(0, "", $DeviceName)
    ; EndIf
; Wend

DllCall($hDLL, "int", "OpenMTP", "int", "1", "WSTR", $DeviceName, "ptr", DllStructGetPtr($ErrorOutput))
If @error Then
    MsgBox(0, "OpenMTP", "@error")
EndIf

DllCall($hDLL, "int", "GetMTPManufacturer", "int", "1", "ptr", DllStructGetPtr($Output), "ptr", DllStructGetPtr($ErrorOutput))
If @error Then
    MsgBox(0, "GetMTPManufacturer", "@error")
EndIf

MsgBox(0, "GetMTPManufacturer", DllStructGetData($Output, 1))
DllCall($hDLL, "int", "CloseMTP", "int", "1", "ptr", DllStructGetPtr($ErrorOutput))

DllClose($hDLL)

$ErrorOutput = 0
$Output = 0

Здесь справку написал, но для PureBasic. Как вызывать функции пример есть, так что кто желает сделать из этого UDF теперь вполне доступно.
 
Верх