[#1] [AREXX] skrypt iconify/uniconify
Witam. Chciałbym napisać skrypt który w zależności od statusu, chował/pokazał by GUI jakiegoś programu. Miało by to wyglądać tak: skrypt binduję pod jakiś multimedialny klawisz - wciskam go, ładuje się AmiNetRadio, następny klik - ikonfikacja. Dalej już wiadomo, coś tam próbowałem ale nic mi nie wychodzi. :(
[#2] Re: [AREXX] skrypt iconify/uniconify

@DarQo, post #1

Musisz wyczaić w dokumentacji ANR czy jest komenda Arexxa pozwalająca zikonyfikować odtwarzacz. Jeśli tak to względnie proste...
[#3] Re: [AREXX] skrypt iconify/uniconify

@Mario, post #2

ANR jest napisany pod MUI, więc ikonifikacja jest w standardzie.

[#4] Re: [AREXX] skrypt iconify/uniconify

@DarQo, post #1

coś tam próbowałem ale nic mi nie wychodzi.

Napisz "coś tam" próbował...

[#5] Re: [AREXX] skrypt iconify/uniconify

@DarQo, post #1


rx "address AMINETRADIO.1 HIDE"
rx "address AMINETRADIO.1 SHOW"
[#6] Re: [AREXX] skrypt iconify/uniconify

@Norbert, post #5

Jeśli to jest skrypt który podpiąłeś pod jakiś guzik czy menu to raczej nie ma on prawa działać.
Zadziała tylko gdy AminetRadio wcześniej będzie uruchomione. I pierwsze co zrobi to zikonifikuje , po czym od razu ponownie otworzy.
Trochę bez sensu... może nawet więcej niż trochę... :)



Ostatnia modyfikacja: 18.10.06 21:18
[#7] Re: [AREXX] skrypt iconify/uniconify

@Dopuser, post #6

proszę bardzo:
ANRPATH = 'Work:mus/AmiNetRadio/AminetRadio'
         
options results
                                  
IF ~show('P','AMINETRADIO.1') then address command 'WBRun 'ANRPATH            
do                     
if ~show('P','AMINETRADIO.1') then address command 'waitforport AMINETRADIO.1'
end

IF HIDE == 1 then                                
    address 'AMINETRADIO.1' 'SHOW                
ELSE                                             
    address 'AMINETRADIO.1' 'HIDE
EXIT


skrypt odpala ANR bez problemu i na tym koniec. Wiem że ostatnia konstrukcja IF jest bez sensu, co prawda nie działa ale gdyby była poprawna to ANR zawsze uruchamiałby się zikonfikowany.
[#8] Re: [AREXX] skrypt iconify/uniconify

@DarQo, post #7

Jeśli chcesz by się uruchamiał zikonifikowany to po prostu:


ANRPATH = 'Work:mus/AmiNetRadio/AminetRadio'
options results
IF ~show('P','AMINETRADIO.1') then do
address command 'WBRun' ANRPATH
'waitforport AMINETRADIO.1'
end
address AMINETRADIO.1 'HIDE'

Myślę że powinno zadziałać... jeśli chodzi o zmienianie stanu programu (zikonifikowany/GUI) to można wykorzystać jakąś zmienną środowiskową do tego celu. Po otwarciu portu skrypt by sprawdzał jej obecność (czy wartość) i w zależności od tego podejmował decyzję o otwarciu lub sprowadzeniu do ikonki i jednocześnie modyfikował ową zmienną ( bądź jej wartość)... ot, moja sugestia...

[#9] Re: [AREXX] skrypt iconify/uniconify

@Dopuser, post #8

Już prawie działa tak jak chcę :) oczywiścię że trzeba użyć do tego zmiennej tylko ja się nie znam na areksie :) chodzi Ci o zmienną jak w C, int zmienna; czy o te co siedzą w ENV: ? Możesz podać jakiś przykład? Mniej-więcej wiem jak ma to działać, przypuśćmy jakąś zmienną np. xyz (xyz = NULL). Ok, skrypt najpierw odpala ANR, do zmiennej wędruje wartość 1 (xyz = xyz + 1), więc jak narazie nic się nie dzieje. Kolejne odpalenie skryptu powinno zikonfikować okno, i znowu xyz = xyz + 1 (xyz == 2), a gdy xyz == 3 - pokazanie GUI. Po mojemu to bedzię:
int xyz = NULL;

xyz++;

switch (xyz) {
    case '3':
        address AMINETRADIO.1 'SHOW';
        break;
    case '2':
        address AMINETRADIO.1 'HIDE';
        break;
    default:
        break;
}

if (xyz >= 3)
    xyz = 1;


Mam nadzieję że w miarę logicznie napisałem, teraz wystarczy to przetłumaczyć na język Arexxa :) Wszelka pomoc mile widziana. pokłony



Ostatnia modyfikacja: 19.10.06 01:18



Ostatnia modyfikacja: 19.10.06 01:19
[#10] Re: [AREXX] skrypt iconify/uniconify

@DarQo, post #9

Logicznie napisałeś... chodzi mi oczywiście o zmienną środowiskową...

Przykładowoskrypt sprawdza obecność zmiennej stan:

IF EXISTS('ENV:stan') THEN

ADDRESS AMINETRADIO.1 'HIDE'
ADDRESS COMMAND 'SETENV stan 1'

ELSE

ADDRESS AMINETRADIO.1 'SHOW'
ADDRESS COMMAND 'UnSet stan'

EXIT

Myślę że logicznie to ująłem... zamiast poleceń AmigaDos: SetEnv i Delete można użyć odpowiedniki Arexxowe (np. RxSet)... wieczorkiem sprawdzę czy działa...

[#11] Re: [AREXX] skrypt iconify/uniconify

@Dopuser, post #6

To nie jest skrypt, tylko pomoc dla DarQo, bo ma (mial) problemy.  
[#12] Re: [AREXX] skrypt iconify/uniconify

@Dopuser, post #10

Wow! Działa, chociaż.... jeśli wyłączę ANR wtedy gdy jest schowany (co prawda nie ma jak, chyba że przez Exchange) czyli zmienna 'stan' już nie istnieje to przy ponownym uruchomieniu skryptu muszę dwa razy go wywołać żeby wkońcu zikonfikować GUI. Wiem, drobiazg ale bug to bug :) Druga sprawa to error przy pierwszym wywołaniu skryptu (ANR jeszcze nie jest wł.)
+++ Error 13 in line 15: Host environment not found
Command returned 10/13: 


WTF?? A oto cały kod:
ANRPATH = 'Work:mus/AmiNetRadio/AminetRadio'

options results

IF ~show('P','AMINETRADIO.1') then do
    address command 'WBRun' ANRPATH 'waitforport AMINETRADIO.1'
end

IF EXISTS('ENV:stan') then do
    address AMINETRADIO.1 'HIDE'
    address command 'delete env:stan'
    end
else do
    address AMINETRADIO.1 'SHOW'
    address command 'setenv stan 1'
    end
exit
[#13] Re: [AREXX] skrypt iconify/uniconify

@DarQo, post #12

Zamiast:

address command 'WBRun' ANRPATH 'waitforport AMINETRADIO.1'
end

DAJ:

address command 'WBRun 'ANRPATH
exit
end

Wtedy pierwsze odpalenie skryptu TYLKO włączy ANR.
[#14] Re: [AREXX] skrypt iconify/uniconify

@Mario, post #13

OK dziękuję wszystkim za pomoc. pokłony
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem