Onko ikkuna Workbenchin hakemistoikkuna?

Saku-foorumi » Classic Amiga » Ohjelmointi » Viestit 2005 » Onko ikkuna Workbenchin hakemistoikkuna? « Edellinen Seuraava »

Kirjoittaja Viesti
 

Mikko Koivunalho
Torstaina, 19. toukokuuta, 2005 - klo 17.39:   
Onko minulla mitään (helppoa) keinoa tarkistaa onko ruudulla (Workbench screen) auki oleva ikkuna Workbenchin hakemistoikkuna? Tai kysytään toisinpäin, miten voin tarkistaa, mille ohjelmalle mikäkin ikkuna kuuluu?

 

Jani Kuituniem
Torstaina, 19. toukokuuta, 2005 - klo 17.58:   
Painat oikeaa hiiren namiskaa ja katsot tuleeko näkyviin Workbenchin omat valikot vaiko jotain muuta.

 

Jani Kuituniemi
Torstaina, 19. toukokuuta, 2005 - klo 17.59:   
Lisäys: noin siis jos haluat tarkistaa onko joku ikkuna Workbenchin ikkuna vai ei. Se, mille ohjelmalle jokin ikkuna kuuluu.. hmm.. siihen en osaa sanoa mitään helppoa keinoa.

 

Mikko Koivunalho
Torstaina, 19. toukokuuta, 2005 - klo 18.05:   
Tarkoitin kylläkin, että voinko mitenkään (C-kielisestä) ohjelmasta käsin tarkastaa sitä, jos minulla on esimerkiksi osoite Window-listaan, minkä saan IntuitionBasesta?

 

Jon
Torstaina, 19. toukokuuta, 2005 - klo 18.48:   
Ikkunalla on MsgPort ja MsgPortilla on tieto Taskista. Onnistuisko näin?

 

Jani Kuituniemi
Torstaina, 19. toukokuuta, 2005 - klo 19.09:   
Oops, my bad. Olis pitäny lukea että tuossa on tuo "Ohjelmointi".. :D

 

Mikko Koivunalho
Torstaina, 19. toukokuuta, 2005 - klo 19.09:   
Olet oikeassa. Kiitos. Se vain vaatii hiukan kiertotietä (tai ainakin nyt tuntuu että heurekekkasin sen): Taskien listasta selviää onko Task NT_TASK vai NT_PROCESS. Jos se on NT_PROCESS, voin lukea Taskia kuin prosessia ja sieltä löytyy ainakin pr_Arguments (komentorivi). Tosin tämäkään ei ole täysin idioottivarmaa. :-)

 

itix
Perjantaina, 20. toukokuuta, 2005 - klo 16.11:   
Tietysti kannattaa muistaa että ikkuna kuin että taski voi kadota millä hetkellä hyvänsä.

Ehkä helpoin tapa on etsiä Workbench-taski (FindTask("Workbench") ?, en ole varma) ja verrata task pointtereita.

Kannattaa myös muistaa että kaikilla ikkunoilla ei välttämättä ole viestiporttia (UserPort).

 

Mikko Koivunalho
Lauantaina, 28. toukokuuta, 2005 - klo 18.23:   
LockIBase() tai Forbid() lukitsee järjestelmän siksi aikaa kun haen tietoja.

Näillä se Taskin nimi muuten löytyi kaikkein helpoimmin:
struct Task *this_window_task = w->UserPort->mp_SigTask;
STRPTR task_title = this_window_task->tc_Node.ln_Name;

Miksi ikkunalle ei olisi UserPortia? Mitä hyötyä sellaisesta ikkunasta olisi? Backdrop?

Olen tekemässä ohjelmaa, joka "cycle windows". Näitähän on tietysti monia mutta tietääkseni missään ei käyttäjä voi valita mitä ikkunoita hän haluaa listaan tulevan. Minä esimerkiksi en halua, että vaihtaessani ikkunaa painella kaikkien Workbenchin drawer-ikkunoiden läpi vain koska ne ovat auki. Samannimisinä ne sitä paitsi sekaantuvat ohjelmien ikkunoihin.
Yritän siis tehdä ohjelmaa sellaista asetusta, jolla voi kieltää ikkunoita nimen tai omistavan prosessin mukaan.

BTW, onkohan mitään mahdollisuutta saada Workbenchiltä listaa käytössä olevista AppIconeista ja sitten ohjelmallisesti tuplaklikata niitä auki?

 

itix
Lauantaina, 28. toukokuuta, 2005 - klo 18.32:   
"Miksi ikkunalle ei olisi UserPortia? Mitä hyötyä sellaisesta ikkunasta olisi? Backdrop?"

UserPortiton ikkuna on normaali käytäntö jos halutaan jakaa yksi portti muiden ikkunoiden kanssa. Silloin ikkuna avataan ilman UserPortia ja ohjelma asettaa sen itse kun ehtii. Muitakin hyviä syitä on.

"BTW, onkohan mitään mahdollisuutta saada Workbenchiltä listaa käytössä olevista AppIconeista ja sitten ohjelmallisesti tuplaklikata niitä auki?"

Ei tietääkseni.

 

Mikko Koivunalho
Lauantaina, 28. toukokuuta, 2005 - klo 22.34:   
I stand corrected. Hyvä neuvo. Täytyy huomioida ja lisätä if(w->UserPort != NULL) {}.

Lisää viestisi tähän
Viestisi:
Käyttäjätunnus: Postitus informaatiota:
Tämä on yksityinen keskustelupalsta. Vain rekisteröidyt käyttäjät ja moderaattorit voivat postittaa tänne.
Salasana:
valinnat: Aktivoi URL:t automaattisesti tässä viestissä
Toimenpide: