Ты действительно думаешь что этого достаточно чтобы получить ответ? :blink:Собственно вопрос в теме.
может скажешь какой проигрыватель хотя бы) или это военная тайна?Danver сказал(а):Собственно вопрос в теме.
Danver [?]
Цитата
Как послать команду "Play" проигрывателю?
Код: AutoIt [Выделить]
ControlClick('[CLASS:1by1WndClass]', '', 'ToolbarWindow321', "Main", 1, 12, 10)
Я бы добавил опциональный параметр hWnd для каждой функций, где значением по умолчанию был бы класс окна.набросал на скорую руку простенькую UDFку для 1by1
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Res_Comment=Tune1by1
#AutoIt3Wrapper_Res_Description=Tune1by1
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Danver
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#Include <HotKey.au3>
#Include <vkConstants.au3>
#Include <1by1.au3>
Global $OptionsArray[1]
Global $DefaultNumber = 1
Global $ExitItem
Global $Seperator
Global $CurSong
Global $CurPath
Opt("TrayMenuMode", 1)
If Not ProcessExists("1by1.exe") Then ; если плеер не запушен
$Su = Run(@ScriptDir & "\1by1.exe") ; пробуем его запустить
Sleep(1000)
_1by1Hide()
If $Su = 0 Then Exit ; если не получилось то выходим
EndIf
_HotKeyAssign(BitOR($CK_WIN, $CK_ALT, $VK_F3), '_1by1PauseResume') ; Вин+Альт+Ф3 - Плей/пауза
_HotKeyAssign(BitOR($CK_WIN, $CK_ALT, $VK_F2), '_1by1PrevTrack') ; Вин+Альт+Ф2 - Прде. Трек
_HotKeyAssign(BitOR($CK_WIN, $CK_ALT, $VK_F4), '_1by1NextTrack') ; Вин+Альт+Ф4 - След. трек
_HotKeyAssign(BitOR($CK_WIN, $CK_ALT, $VK_F1), 'ShowHide') ; Вин+Альт+Ф1 - Показать/скрыть
Func ShowHide() ; показать скрыть окно плеера
If WinGetState ('[CLASS:1by1WndClass]') = 21 Then ; если скрыто
_1by1Show() ; показать
ElseIf WinGetState ('[CLASS:1by1WndClass]') = 15 Then ; если активно
_1by1Hide() ; скрыть
EndIf
EndFunc
$CurPath = ControlTreeView('[CLASS:1by1WndClass]', "", "SysTreeView321", "GetSelected") ; запомним текущий путь
MakeMenu() ; сделаем меню
Func MakeMenu() ; сделаем меню
If ControlListView('[CLASS:1by1WndClass]', "", "SysListView321", "GetItemCount") > 0 Then ; если список не пустой
ReDim $OptionsArray[ControlListView('[CLASS:1by1WndClass]', "", "SysListView321", "GetItemCount")] ; подстраиваем массив под количество треков
For $i = 0 To UBound($OptionsArray)-1 ; шагаем по массиву
$OptionsArray[$i] = TrayCreateItem(ControlListView('[CLASS:1by1WndClass]', "", "SysListView321", "GetText", $i)) ; заполняем меню названиями песен
Next
$Seperator = TrayCreateItem("") ; добавляем разделитель
$ExitItem = TrayCreateItem("Выход") ; добавляем меню выход
EndIf
EndFunc
Func DelMenu() ; очищаем меню (не придумал как это сделать иначе)
For $i = 0 To UBound($OptionsArray)-1 ; шакаем по массиву
TrayItemDelete($OptionsArray[$i]) ; удаляем элемент
Next
TrayItemDelete($Seperator) ; удаляем разделитель
TrayItemDelete($ExitItem) ; удаляем меню Выход
EndFunc
While 1
Sleep(10)
If $CurPath <> ControlTreeView('[CLASS:1by1WndClass]', "", "SysTreeView321", "GetSelected") Then ; если изменился путь в дереве (перешли в другую папку)
DelMenu() ; очищаем меню
sleep(1000)
MakeMenu() ; заполняем треками из новой папки
$CurPath = ControlTreeView('[CLASS:1by1WndClass]', "", "SysTreeView321", "GetSelected") ; запоминаем текущий путь
EndIf
$TrayMsg = TrayGetMsg() ; обрабатываем события меню
For $i=0 to UBound($OptionsArray)-1 ; шагаем по массиву
If $OptionsArray[$i] = $TrayMsg Then ; если произошедшее событие соответвует идентификатору меню
ControlListView('[CLASS:1by1WndClass]', "", "SysListView321", "SelectClear") ; очищаем выделение в списке плеера
ControlListView('[CLASS:1by1WndClass]', "", "SysListView321", "Select", $i) ; выделяем выбранный в меню трек в списке плеера
TrayItemSetState($i,1) ; помечаем его галочкой
_1by1Play() ; нажимаем плей
TrayItemSetState($OptionsArray[$i],1) ; в подсказке к иконке в трее пишем трек, который выбрали и который сейчас играем
EndIf
If TrayItemGetText ($OptionsArray[$i]) = _1by1SongName() Then ; если играющий трек соответствует тому треку что в меню
TrayItemSetState($OptionsArray[$i],1) ; помечаем его
Else ; если не соответсвует
TrayItemSetState($OptionsArray[$i],4) ; убираем пометку галочкой
EndIf
Next
If $CurSong <> _1by1SongName() Then ; если текущая песня изменилась
TrayTip("Играет трек:", _1by1SongName(), 10, 1) ; показываем всплывающую подсказку возле иконки в трее
$CurSong = _1by1SongName() ; запоминаем название текущего трека
EndIf
If $TrayMsg = $ExitItem Then
ProcessClose("1by1.exe") ; закрываем плеер
Exit ; если нажали Выход то завершаем скрипт
EndIf
TraySetToolTip (_1by1SongName()) ; обновляем название песни в подсказке к иконке в трее
WEnd
#Include <Memory.au3>
#Include <ProcessConstants.au3>
#Include <WinAPIEx.au3>
#include <ToolbarConstants.au3>
$hWnd = WinGetHandle("[CLASS:1by1WndClass]")
$iProcID = WinGetProcess("[CLASS:1by1WndClass]")
$hToolBar = ControlGetHandle($hWnd, "", "[CLASS:ToolbarWindow32; INSTANCE:1]")
#cs
0 - Play track from beginning
1 - Stop / Resume (Unpause)
2 - Play previous track
3- Play next track
5 - Search a directory/list backwards
6 - Search a directory/list forward
8 - Repeat off
10 - Settings
11 - Toggle compact view
12 - Toggle tree view
14 - Next: Move track to be played after current
15 - Skip: remove track from current list (not delete the file)
17 - (Re-)Shuffle
19 - Toggle playlist view
21 - Reload file list
22 - Go to current track
23 - Mute
25 - Main menu IMHO не нужна
#ce
_TBClickButton($hToolBar, 0)
Func _TBClickButton($hToolBar, $iButtonID)
Local $hTBBUTTON, $iProcessID, $hProcess, $hButton
Local Const $t_TBBUTTON = "int Bitmap;" & _
"int Command;" & _
"byte State;" & _
"byte Style;" & _
"byte;" & _
"dword_ptr Param;" & _
"int_ptr String"
$hTBBUTTON = DllStructCreate($t_TBBUTTON)
_WinAPI_GetWindowThreadProcessId($hToolBar, $iProcessID)
$hProcess = _WinAPI_OpenProcess(BitOR($PROCESS_ALL_ACCESS, $PROCESS_DUP_HANDLE), True, $iProcessID)
$hButton = _MemVirtualAllocEx($hProcess, 0, DllStructGetSize($hTBBUTTON), BitOR($MEM_COMMIT, $MEM_TOP_DOWN), $PAGE_READWRITE)
_SendMessage($hToolBar, $TB_GETBUTTON,$iButtonID, $hButton)
_WinAPI_ReadProcessMemory($hProcess, $hButton, DllStructGetPtr($hTBBUTTON), DllStructGetSize($hTBBUTTON), 0)
_SendMessage($hToolBar, $WM_COMMAND , DllStructGetData($hTBBUTTON, "Command") , $hToolBar)
_MemVirtualFreeEx($hProcess, $hButton, DllStructGetSize($hTBBUTTON), $MEM_RELEASE)
_WinAPI_CloseHandle($hProcess)
EndFunc
#Include <WinAPIEx.au3>
#include <GuiToolbar.au3>
#include <ToolbarConstants.au3>
$hWnd = WinGetHandle("[CLASS:1by1WndClass]")
$hToolBar = ControlGetHandle($hWnd, "", "[CLASS:ToolbarWindow32; INSTANCE:1]")
$iCommand = _GUICtrlToolbar_IndexToCommand($hToolBar, 0)
_SendMessage($hToolBar, $WM_COMMAND, $iCommand, $hToolBar)