1

Тема: AHK: Воспроизведение одного звука из mp4

Здравствуйте.

Подскажите как средствами AHK - без открытия посторонних программ - воспроизвести звук файла "C:\звуки 1\1.mp4" ?

2 (изменено: teadrinker, 2019-02-16 10:32:30)

Re: AHK: Воспроизведение одного звука из mp4

Проще всего так:
SoundPlay
Если не захочет играть, тогда так:

; https://docs.microsoft.com/en-us/windows/desktop/WMP/object-model-reference-for-scripting
#Persistent
filePath := "C:\звуки 1\1.mp4"

Player := ComObjCreate("WMPlayer.OCX.7")
ComObjConnect(Player, "WMP_")
Player.Settings.Volume := 50
Player.url := filePath
Return

WMP_StatusChange(wmp) {
   if wmp.PlayState = 1 ; Stopped
      ExitApp
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

3

Re: AHK: Воспроизведение одного звука из mp4

teadrinker, скажите - а как заставить этот код бесконечно проигрывать звук ?

4

Re: AHK: Воспроизведение одного звука из mp4

Какой код, первый, или второй?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

5

Re: AHK: Воспроизведение одного звука из mp4

teadrinker, второй код.
Тот который вы к своему сообщению приложили.

6

Re: AHK: Воспроизведение одного звука из mp4

Добавьте строчку

Player.Settings.SetMode("loop", true)
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

7

Re: AHK: Воспроизведение одного звука из mp4

teadrinker, скажите - а вот допустим скрипт 1.ahk  проигрывает звук бесконечно.
Как закрыть этот скрипт, чтобы выключить это проигрывание ?

8

Re: AHK: Воспроизведение одного звука из mp4

Правой кнопкой по иконке скрипта в трее —> Exit.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

9

Re: AHK: Воспроизведение одного звука из mp4

Это понятно.
Я имею ввиду - как другим скриптом выключить скрипт 1.ahk ?

10 (изменено: teadrinker, 2019-02-16 13:23:16)

Re: AHK: Воспроизведение одного звука из mp4

SetTitleMatchMode 2
DetectHiddenWindows, On
WinClose, 1.ahk ahk_class AutoHotkey
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

11

Re: AHK: Воспроизведение одного звука из mp4

teadrinker, не работает.

Сперва запускаю 1.ahk - начинает играть звук.
Потом запускаю последний код - и ничего не происходит.
Звук продолжает проигрываться.

12

Re: AHK: Воспроизведение одного звука из mp4

У меня работает. Попробуйте убрать в конце "ahk_class AutoHotkey".

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

13

Re: AHK: Воспроизведение одного звука из mp4

teadrinker, убрал.
Теперь скрипт выглядит вот так:

SetTitleMatchMode 2
DetectHiddenWindows, On
WinClose, 1.ahk

Но он по-прежнему не закрывает процесс 1.ahk и звук продолжает играть.

14 (изменено: димитрий2, 2019-02-16 14:14:08)

Re: AHK: Воспроизведение одного звука из mp4

teadrinker, я не совсем разбираюсь в ahk.
Поэтому немного непонятно как эти процессы отображаются в диспетчере задач.
У меня постоянно висит в трее - несколько других рабочих скриптов ahk, которых не нужно закрывать.
И как я понял - им всем сопоставлен процесс AutoHotkey.exe

Когда я запускаю 1.ahk - то в диспетчере задач появляется еще один процесс с точно таким же названием AutoHotkey.exe.

15

Re: AHK: Воспроизведение одного звука из mp4

Всё правильно, так и должно быть. Ещё так можно попробовать:

WM_COMMAND := 0x111, ID_FILE_PAUSE := 65403, ID_FILE_CLOSE = 65405
scriptName := "1.ahk ahk_class AutoHotkey"
DetectHiddenWindows, On
SetTitleMatchMode 2

if !hWnd := WinExist(scriptName) {
   MsgBox, Окно не найдено!
   Return
}
PostMessage, WM_COMMAND, ID_FILE_PAUSE
PostMessage, WM_COMMAND, ID_FILE_CLOSE
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

16

Re: AHK: Воспроизведение одного звука из mp4

teadrinker, запускаю этот скрипт, но ничего не происходит.

1.ahk по-прежнему висит в трее и продолжает проигрывать звуковой файл.

17

Re: AHK: Воспроизведение одного звука из mp4

Не знаю тогда, в чём может быть проблема. Разве что 1.ahk запущен от администратора, а тот, которым пытаетесь закрыть — нет.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

18

Re: AHK: Воспроизведение одного звука из mp4

Попробуйте запустить в таком виде:

WM_COMMAND := 0x111, ID_FILE_PAUSE := 65403, ID_FILE_CLOSE = 65405
scriptName := "1.ahk ahk_class AutoHotkey"
DetectHiddenWindows, On
SetTitleMatchMode 2

MsgBox, Закрывающий скрипт запущен

if !hWnd := WinExist(scriptName)
   MsgBox, Окно не найдено!
else
   MsgBox, Окно 1.ahk обнаружено
PostMessage, WM_COMMAND, ID_FILE_PAUSE
MsgBox, % ErrorLevel
PostMessage, WM_COMMAND, ID_FILE_CLOSE
MsgBox, % ErrorLevel

Какие сообщения выдаёт?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

19

Re: AHK: Воспроизведение одного звука из mp4

teadrinker, теперь появилось окно "Закрывающий скрипт запущен".
Затем пишет "Окно 1.ahk обнаружено".
Затем пишет "0".
Затем опять пишет "0" - и звук перестает проигрываться и файл 1.ahk закрывается.

А как это все - без лишних окон сделать ?
Просто закрыть и все.

20

Re: AHK: Воспроизведение одного звука из mp4

Попробуйте так:

WM_COMMAND := 0x111, ID_FILE_PAUSE := 65403, ID_FILE_CLOSE = 65405
scriptName := "1.ahk ahk_class AutoHotkey"
DetectHiddenWindows, On
SetTitleMatchMode 2

if !WinExist(scriptName) {
   MsgBox, Окно не найдено!
   Return
}
PostMessage, WM_COMMAND, ID_FILE_PAUSE
Sleep, 100
PostMessage, WM_COMMAND, ID_FILE_CLOSE
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

21

Re: AHK: Воспроизведение одного звука из mp4

teadrinker,  вот сейчас все заработало.
Большое спасибо вам.

22

Re: AHK: Воспроизведение одного звука из mp4


Gui, Add, ActiveX, vMP, WMPlayer.OCX
MP.url := file ; путь к файлу
gui, show, hide
WP.Play

Остановка:

gui, destroy

23

Re: AHK: Воспроизведение одного звука из mp4

А GUI зачем?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

24

Re: AHK: Воспроизведение одного звука из mp4

teadrinker пишет:

Добавьте строчку

Player.Settings.SetMode("loop", true)

Странный эффект, в WMP из под винды или в большинстве других плееров в момент повторного проигрывания нет мелькания как в ActiveX.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

25

Re: AHK: Воспроизведение одного звука из mp4

Точнее в момент окончания воспроизведения последний кадр пропадает (так же как и при однократном воспроизведении), то есть становится черная картинка.
Причём такого нет, если ActiveX в точности соответствует размерам видео, то есть по окончании воспроизведения остаётся последний кадр.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

26

Re: AHK: Воспроизведение одного звука из mp4

Отслеживай конец и перематывай сам на начало.

27

Re: AHK: Воспроизведение одного звука из mp4

Непрерывно следить когда текущая позиция совпадёт с концом, что то не очень.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

28

Re: AHK: Воспроизведение одного звука из mp4

Так в конце не исчезает:

#SingleInstance Force
#NoEnv

File = w2v.mp4 

OnExit Wmpclose 
Global hWmp 

Gui, Margin, 0,0  
Gui +LastFound  +AlwaysOnTop -Caption
Gui Add, ActiveX, w111 h111 vWmp hwndhWmp, WmpLayer.OCX

ComObjConnect(Wmp, WmpEvents)

Wmp.uiMode := "none" 

Wmp.Url := File
Gui, Show, NA x0 y0
return   

Class WmpEvents 
{ 
	StatusChange(Wmp) { 
		If Wmp.PlayState = 3  ;	Playing
		{ 
			Height := Wmp.currentMedia.imageSourceHeight  
			Width := Wmp.currentMedia.imageSourceWidth
			winmove, ahk_id %hWmp%, , 0, 0, Width, Height 
			Gui, Show, NA w%Width% h%Height%
		}
	}    
}

esc::
Wmpclose:  
	Wmp.close
	ExitApp

Но если изменить размер, то исчезает.

winmove, ahk_id %hWmp%, , 0, 0, Width, Height-1
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

29

Re: AHK: Воспроизведение одного звука из mp4

Через settimer?

30

Re: AHK: Воспроизведение одного звука из mp4

Таймер исходя из продолжительности?
На коротких роликах не айс, и при открытии файла, даже картинки, WMP очень прожорлив, будут просадки.
Также при открытии почему то начинают перерисовываться некоторые другие окна, например блокнот++, думаю это тоже часть большой нагрузки. В других плеерах такого не наблюдал.
То что в 28 последний кадр остаётся, это по твоему баг.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

31 (изменено: Malcev, 2019-03-06 06:58:14)

Re: AHK: Воспроизведение одного звука из mp4

Можно запускать таймер при событии начала воспроизведения, после чего подписку на событие прекращать.
А таймер уже будет запускать "Wmp.controls.currentPosition := 0".
Тебе же непрерывный цикл нужен, так что файл будет открываться только первый раз.

serzh82saratov пишет:

То что в 28 последний кадр остаётся, это по твоему баг.

По-моему WMP - это один большой баг.

32

Re: AHK: Воспроизведение одного звука из mp4

Да уж, работает через одно место. Знаешь какие то плееры с API и.т.п.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

33 (изменено: Malcev, 2019-03-06 14:27:38)

Re: AHK: Воспроизведение одного звука из mp4

Не, никакие не тестировал.
Но у меня без глюков работает если в таймере прописать:

Wmp.controls.Pause
Wmp.controls.currentPosition := 0
Wmp.controls.Play