#1 25-06-2010 10:18

RDH
From: Энгельс
Registered: 09-01-2010
Posts: 65

[CLEO4/REL] Автоматическое радио

{$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)


programmer.png
modder.jpg

Offline

#2 25-06-2010 14:32

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: [CLEO4/REL] Автоматическое радио

Хорошая, свежая идея. Но код можно оптимизировать ))

Offline

#3 27-06-2010 19:33

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: [CLEO4/REL] Автоматическое радио

Цикл @radio заменить на while true..end, @set_radio_station оформить как scm-функцию, убрать лишние метки

Offline

Board footer

Powered by FluxBB