You are not logged in.
Pages: 1
{$CLEO}
const
Flag=0@
WM_USER=1024
IPC_ISPLAYING=104
CURRENT_RADIO_STATION=0xBA679A
SET_RADIO_STATION=0x507E10
MP3_PLAYER=12
RADIO_OFF=13
end
0AA2: 1@ = load_library "user32.dll" // IF and SET
0AA4: 2@ = get_proc_address "FindWindowA" library 1@ // IF and SET
0AA4: 3@ = get_proc_address "SendMessageA" library 1@ // IF and SET
while true
wait 0
if
not Actor.Driving($PLAYER_ACTOR)
then
Flag=False
Continue
end
0AA7: call_function 2@ num_params 2 pop 0 0 "Winamp v1.x" 4@ // ищем Winamp
if 4@==0 // не запущен
then
0AB1: call_scm_func @set_radio_station 2 Flag MP3_PLAYER Flag
else
0AA7: call_function 3@ num_params 4 pop 0 IPC_ISPLAYING 0 WM_USER 4@ 5@ // запрашиваем статус
if 5@==1 // Winamp в состоянии воспроизведения
then
0AB1: call_scm_func @set_radio_station 2 Flag RADIO_OFF Flag // вырубаем радио
else
0AB1: call_scm_func @set_radio_station 2 Flag MP3_PLAYER Flag
end
end
end
:set_radio_station
0A8D: 2@ = read_memory CURRENT_RADIO_STATION size 1 virtual_protect 0
if and
803B: not 1@ == 2@ // (int)
Flag==False
then
0AA5: call SET_RADIO_STATION num_params 1 pop 0 1@
Flag=True
end
0AB2: ret 1 FlagАвтоматически переключает радио на "любимую" станцию (в данном случае MP3 Player). Если запущен Winamp и он находится в состоянии воспроизведения, то радио выключается.
Last edited by RDH (17-07-2010 10:46)


Offline
Хорошая, свежая идея. Но код можно оптимизировать ))
Offline
Цикл @radio заменить на while true..end, @set_radio_station оформить как scm-функцию, убрать лишние метки
Offline
Pages: 1