![]() |
Собрался тут, попробовал все.
Итог: 1. для того, чтобы переключать радио и mp3 одинаковым образом, команду на переключение трека надо давать не винампу, а РР. 2. Когда я переключаю трек кликая на кнопку РР, то у него срабатывает скрипт, который работает по-разному в зависимости от того, что за .skin файл находится на экране. К примеру, igo.skin после отдавания команды Next затем активирует igo_pc.exe. Я же могу либо клинкуть на экране, либо каким-либо образом послать в РР напрямую команду Next. Получается, что когда я шлю в RR команду Next, то igo перестает быть активным приложением и перестает работать. Я пробовал посылать ему текстовую команду напрямую, через wm_copydata. Итог тот же - RR становится активным приложением (видимо, у него это изнутри заложено) и IGO перестает работать... Получается, что надо клинать на экране?... То есть я получил ту же проблему, надо управлять RR, не вызывая его активацию. |
я igo не пользую, а ситигид работает нормально неактивным.
может попробовать обратно активировать навигашку как тут: http://compcar.ru/forum/showthread.p...3009#post13009 Код:
^!+f:: ; RR command NEXT |
По поводу управления RR без акти вации его: я таки ступил, mw_copydata не активирует RR!
вот код. Send_WM_COPYDATA( ParameterToSent, TargetTC ) ; функция высылки Тоталу пользовательской команды em_xyz { VarSetCapacity( CopyDataStruct, 12 ) ; устанавливаем размер высылаемой структуры данных InsertInteger( 1, CopyDataStruct ) ; вставляем в структуру то, что требует ТС для исполнения команд InsertInteger( StrLen( ParameterToSent ), CopyDataStruct, 4 ) ; добавляем собственно команду (+ символ конца строки) InsertInteger( &ParameterToSent, CopyDataStruct, 8 ) ; добавляем указатель на собственно команду SendMessage, 0x4A,, &CopyDataStruct,, %TargetTC% ; шлём команду Тоталу, обязательно Send, а не Post (0x4A = WM_COPYDATA) Return, ErrorLevel ; выходим из функции и возвращаем ответ SendMessage'а } ;----------------------------------------------------------------------------- InsertInteger( pInteger, ByRef pDest, pOffset = 0, pSize = 4 ) ; функция заполнения структуры данными { Loop, 4 ; копируем каждый байт целого числа в структуру как сырые двоичные данные { DllCall("RtlFillMemory" ; заполняем структуру нашими данными , "UInt" , &pDest + pOffset + A_Index-1 ; указатель на адрес, с которого начинается заполнение , "UInt" , 1 ; размер заполняемой структуры в байтах , "UChar", pInteger >> 8*( A_Index-1 ) & 0xFF) ; содержимое заполняемого байта } } F7:: { ifWinExist, ahk_class ThunderRT6FormDC { Send_WM_COPYDATA( "Next", "RoadRunner" ) ; шлём команду РР return } else { MsgBox, not found return } } F6:: { ifWinExist, ahk_class ThunderRT6FormDC { Send_WM_COPYDATA( "Prev", "RoadRunner" ) ; шлём команду РР return } else { MsgBox, not found return } } Пробовал запускать и жать F6 и F7, текущее приложение не меняется, РР активным не становится, это то, что тебе надо! зы. но Igo почему-то перестает быть активным, в отличие от любого другого приложения :-). |
Часовой пояс GMT +4, время: 20:33. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot