Что нового

Не работает Winclose,да и запуск Run - через раз

mikzin

Новичок
Сообщения
80
Репутация
0
доброе утро,

вообщем, задача простая, но чего-то у меня лыжи не едут.. ((
надо сначала проверить, нет ли запущеного vlc, если есть - закрыть его.
потом запустить его, с пользовательским листом, чуты выждать, и послать туда Ctrl+M. потом закрыться.

проблема: когда окно плеера не на первом плане - закрытие не срабатывает, просто ничего не происходит.. иногда закрывает окошко сообщений, но главное окно плеера остается открытым. иногда останавливается после закрытия, нет запуска vlc.
там кусок заголовка окна всегда "Медиапроигрыватель VLC", может можно как-то по этому куску хэндл окна получить?

Код:
while ProcessExists("vlc.exe")
$_hwnd = WinWait("[CLASS:QWidget]", "")
WinActivate($_hwnd)
WinClose($_hwnd)
wend

Sleep(500)
ShellExecute("C:\Program Files (x86)\VideoLAN\VLC\vlc.exe", "C:\Users\Dmitry\Desktop\Test.m3u", @SW_SHOW)
Sleep(500)
Send("vlc.exe{Ctrl+M}")
Exit


p.s. запуск всегда происходит, когда окно плеера неактивно.
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
А почему не воспользоваться?
Код:
ProcessClose
 
Автор
M

mikzin

Новичок
Сообщения
80
Репутация
0
edyapd сказал(а):
А почему не воспользоваться?
Код:
ProcessClose
да, пробовал, не подходит.
закрытие процесса не сохраняет текущие настройки плеера.
другими словами, если я ставлю в плеере громкость на минимум, то при срабатывании программы будет все равно громко, как было в тот раз, когда она закрывалась как положено.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
mikzin
Код:
Opt("WinTitleMatchMode", 2)

$VLCpath = "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe"
$M3Upath = "C:\Users\Dmitry\Desktop\Test.m3u"

While WinClose("Медиапроигрыватель VLC")
  Sleep(30)
WEnd
ProcessWaitClose("vlc.exe", 1)

Run($VLCpath & ' "' & $M3Upath & '"')
WinWait("Медиапроигрыватель VLC")
ControlSend("Медиапроигрыватель VLC", "", "", "^m")
 
Автор
M

mikzin

Новичок
Сообщения
80
Репутация
0
вынужден воскресить тему,
вот здесь:

Код:
WinWait("Медиапроигрыватель VLC")
ControlSend("Медиапроигрыватель VLC", "", "", "^m")


не всегда окошкo сообщений открывается... :(
как будто туда не идет нажатие..
как сделать, чтобы оно точно открывалось?

Код:
While not WinWait("Сообщения")
  Sleep(30)
WEnd
ControlSend("Медиапроигрыватель VLC", "", "", "^m")

?
 
Автор
M

mikzin

Новичок
Сообщения
80
Репутация
0
Попробуйте заменить WinWait на WinWaitActive
заменил.
окно сообщений открывается часто, тем не менее, не в 100%, а где-то в 80%
:(

p.s. ставил задержку (sleep), но и это оказалось не эффективно.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
mikzin
Да, есть проблема. При запуске VLC подсчитывает общую продолжительность и при больших листах немного "подвисает". Пробуем так
Код:
Run($VLCpath & ' "' & $M3Upath & '"')
WinWait("Медиапроигрыватель VLC")
For $i = 0 To 99
  ControlSend("Медиапроигрыватель VLC", "", "", "^m")
  Sleep(100)
  If WinExists("Сообщения") Then ExitLoop
Next
If $i = 100 Then MsgBox(0, "VLC", "Возникли проблемы с вызовом сообщений")
 
Автор
M

mikzin

Новичок
Сообщения
80
Репутация
0
и при больших листах немного "подвисает"
у меня всего 2 канала в листе, там всех их 5 строк.. :blink:
Код:
#EXTM3U
#EXTINF:0,(ns-1)Россия 24
http://16.50.16.60:1234/udp/233.7.70.68:5000
#EXTINF:0,(bur-1)Россия 24
http://25.19.235.59:1234/udp/233.7.70.68:5000

пока все ок.
 
Верх