Что нового

Определение пути файла, запущенного в проигрывателе VLC

Visors

Новичок
Сообщения
58
Репутация
0
Добрый вечер.
Подскажите решение.

Есть такая программа - проигрыватель VLC.
Известен адрес процесса этой запущенной программы.
Но как узнать адрес видео-файла, который проигрывается в настоящий момент времени - непонятно.

Скажите - как это можно сделать скриптом autoit ?
(Как скриптом autohotkey - узнать адрес видеофайла, который проигрывается в VLC в настоящий момент времени)
В самой программе VLC - это вкладка "Инструменты" - "Информация о медиафайле" - "Расположение".
 
Автор
V

Visors

Новичок
Сообщения
58
Репутация
0
Подскажите - возможно ли вытащить полный путь проигрываемого файла из VLC при помощи autoit ?
 

All2khoff

Продвинутый
Сообщения
343
Репутация
65
Я могу предложить, получить заголовок окна VLC... в моем случае это "11-31 мая 2018.avi - Медиапроигрыватель VLC"
Код:
WinGetTitle ("- Медиапроигрыватель VLC")

после для получения только имени файла "11-31 мая 2018.avi" используем
Код:
StringRegExpReplace ( "11-31 мая 2018.avi - Медиапроигрыватель VLC", "- Медиапроигрыватель VLC", "")

и произвести поиск файла по всем дискам в системе.
с поиском файла поможет эта статья http://autoit-script.ru/index.php?topic=315.0
Попробуйте, возможно вам подойдет.
 
Автор
V

Visors

Новичок
Сообщения
58
Репутация
0
Glass4217
Да вы правы, наверное это решение подойдет.

Нашел по указанной вами ссылке - такой скрипт:
Код:
#include <Array.au3>

$aReturn = _FileSearch(@DesktopDir, "*.txt;*.htm")
_ArrayDisplay($aReturn)

;$iFlag = 0 - Файлы и папки (по умолчанию)
;$iFlag = 1 - Только файлы
;$iFlag = 2 - Только папки
Func _FileSearch($sPath, $sFileMask, $iFlag = 0)
    Local $sOutBin, $sOut, $aOut, $sRead, $hDir, $sAttrib
    
    Switch $iFlag
        Case 1
            $sAttrib = ' /A-D'
        Case 2 
            $sAttrib = ' /AD'
        Case Else 
            $sAttrib = ' /A'
    EndSwitch
    
    $sOut = StringToBinary('0' & @CRLF, 2)
    $aMasks = StringSplit($sFileMask, ';')
    
    For $i = 1 To $aMasks[0]
        $hDir = Run(@ComSpec & ' /U /C DIR "' & $sPath & '\' & $aMasks[$i] & '" /S /B' & $sAttrib, @SystemDir, @SW_HIDE, 6)
        
        While 1
            $sRead = StdoutRead($hDir, False, True)
            
            If @error Then
                ExitLoop
            EndIf
            
            If $sRead <> "" Then
                $sOut &= $sRead
            EndIf
        Wend
    Next
    
    $aOut = StringRegExp(BinaryToString($sOut, 2), '[^\r\n]+', 3)
    
    If @error Then
        Return SetError(1)
    EndIf
    
    $aOut[0] = UBound($aOut)-1
    Return $aOut
EndFunc


А куда в нем добавить эти строчки, чтобы он через msgbox выдал полный путь (нужен только поиск в "C:\видео файлы") ?

Код:
WinGetTitle ("- Медиапроигрыватель VLC")

и
Код:
StringRegExpReplace ( "11-31 мая 2018.avi - Медиапроигрыватель VLC", "- Медиапроигрыватель VLC", "")
 

All2khoff

Продвинутый
Сообщения
343
Репутация
65
вы пошли по сложному пути, вам более подходит первое сообщение из поста
вот работающий скрипт

Код:
#Include <File.au3>
#include <Array.au3>
Opt("WinTitleMatchMode", 2)
$sTitle = WinGetTitle (" - Медиапроигрыватель VLC")
$sFilename = StringRegExpReplace ($sTitle, " - Медиапроигрыватель VLC", "")
$sCatalog = "c:\видео файлы"

_FindFiles($sCatalog, $sFilename)

Func _FindFiles($sRoot, $sFile)
    Local $FileList
    $FileList = _FileListToArray($sRoot, $sFile, 1)
    If Not @error Then
        For $i = 1 To $FileList[0]
;~             ConsoleWrite($sRoot & '\' & $FileList[$i] & @CR)
			MsgBox(0, "Полный путь к файлу", $sRoot & '\' & $FileList[$i] & @CR)
        Next
    EndIf
    $FileList = _FileListToArray($sRoot, '*', 2)
    If Not @error Then
        For $i = 1 To $FileList[0]
            _FindFiles($sRoot & '\' & $FileList[$i], $sFile)
        Next
    EndIf
EndFunc   ;==>_FindFiles
 
Автор
V

Visors

Новичок
Сообщения
58
Репутация
0
Glass4217
Спасибо. Теперь все работает.
 
Верх