[#1] Zamykanie programu na klawisz
Witam

Czy jest jakiś program który działa w tle i po naciśnięciu zdefiniowanego klawisza zamknie jakiś program?
[#2] Re: Zamykanie programu na klawisz

@11111olo, post #1

Jest to do zrealizowania, ale musisz liczyc sie ze system nie bedzie stabilny
Potrzebujesz program potrafiacego definiowac HOTKEY i np. SCOUT
[#3] Re: Zamykanie programu na klawisz

@Norbert, post #2

No dobra.

Może nie napisałem tego do końca dobrze więc chciałbym aby za pomocą ikony odpalam "skrót" w którym jest wpisane coś w stylu

JAKIŚ_PROGRAM_KTÓRY_UMOŻLIWIA_ZDEFINIOWANIE KLAWISZA NAZWA_PROGRAMU

Odpalam np. SYSINFO, naciskam np F10 i program się zamyka.
Nie chodzi o to aby cały czas ten program siedział w tle tylko jak odpalę jakiś konkretny program.

Coś jak w WHDLOAD wychodzenie z gry do WB która tego uniemożliwiała.
[#4] Re: Zamykanie programu na klawisz

@11111olo, post #3

Zakładam, że mówimy o zamykaniu programu, który nie ma hotkeya do zamknięcia, ani nie posiada możliwości jego zdefiniowania.

W Amiga OS znajduje się utilek o nazwie FKey (SYS:Tools/Commodities/FKey), którym możesz przypisywać polecenia pod kombinacje klawiszy. Opis programu znajdziesz w instrukcji obsługi Workbencha (ta książka dołączana do Ami).

Wiele programów ma port ARexxa - więc można je zamknąć wysyłając do nich stosowny komunikat ARexxa (np. za pomocą skryptu odpalanego z ikony lub za pomocą FKeya).

Jeżeli program nie ma portu ARexxa, to możesz wysłać do niego sygnał za pomocą polecenia Break (które możesz bezpośrednio wywołać z poziomu FKeya, lub napisać sobie stosowny skrypt, który będzie wykrywał program do zamknięcia - w tym pomocne będzie polecenie Status).

Przykład skryptu:
-------------------------
Key NazwaProgramu
.Bra {
.Ket }

C:Status COM {NazwaProgramu} >ENV:NumerProcesu
C:Break $NumerProcesu ALL
-------------------------
Skrypt wywołujesz z parametrem będącym nazwą tasku do zamknięcia.

Wiele programów możesz zamknąć za pomocą Exchange (którym da się sterować "z zewnątrz")

Wszystko, co dotąd opisałem, masz w Amiga OS - czyli "pod ręką".

Na Aminecie, oprócz wspomnianego wyżej Scouta, leżą m. in. takie programy jak: TBreak, break3710, breakman, BreakName372, Breaker, ProcessManager czy ARTM.




Ostatnia aktualizacja: 03.11.2013 15:34:38 przez APC74
[#5] Re: Zamykanie programu na klawisz

@APC74, post #4

Wyczerpująca odpowiedź.

Sądzę że w tym co podałeś znajdę program o który mi chodzi.
Dzięki.
[#6] Re: Zamykanie programu na klawisz

@11111olo, post #1

Jeśli chodzi Ci o taką funkcjonalność jak windowsowe Alt+F4 to zapomnij. Programem C:Break raczej niewiele zdziałasz, np. systemowego Ed'a nie da się tym wyłączyć.
[#7] Re: Zamykanie programu na klawisz

@forge, post #6

Patrzyłem te programy i albo pokazuje się guru albo nie wiem jak to obsługiwać. Te co wiem to nie nadają się.
[#8] Re: Zamykanie programu na klawisz

@11111olo, post #7

To może tak: napisz jaki program konkretnie chciałbyś zamykać (jeden lub więcej przykładów) i na jakiej konfiguracji (wersja Amiga OS) chciałbyś to robić - to może będzie łatwiej udzielić Ci konkretnej odpowiedzi.
BTW Jeżeli chciałbyś zamykać np. okna katalogów na WB (i niektóre programy z otwartymi oknami) to na Aminecie leży np. Ned (Ned.lha - zamykanie aktywnych okien klawiszem Esc). Możesz też zainstalować łatę na Intuition - WinCloser (oczywiście, że na Aminecie leży) i wtedy zamykasz okna kombinacją klawiszy Ctrl + \
No i jest jeszcze CleseEm.
[#9] Re: Zamykanie programu na klawisz

@forge, post #6

No niestety jakoś nikomu nie chciało się przypilnować autorów amiprogramów, żeby trzymali się wytycznych w kwestii zamykania programów i dlatego mamy to co mamy. Dodatkowo całą sprawę komplikują GUI obecne na AOS (intuition, mui, req, reqtools, reaction, bgui, triton...). I choć można się ratować jakimiś kombinacjami w stylu łatania intuition czy konfigurowania mui czy reqtoolsa to i tak znajdzie się jakaś odporna łajza, której autor postanowił wymyślić własny sposób na jej zamknięcie...

Pomijając sensowność zamykania jakąś specjalną metodą programu, który ma własną kombinację klawiszy do jego zamykania i służący do tego gadżet na oknie, to ed ma port ARexxa i w ten sposób da się go zamknąć (chociaż sensu w ty za grosz ;) ) - ale kto amigowcowi zabroni... :D
[#10] Re: Zamykanie programu na klawisz

@APC74, post #8

Załóżmy że program by się nazywał ZAMYKACZ i chcemy zamknąć SYSINFO klawiszem F10.

Składnia wyglądała by tak:

ZAMYKACZ SYSINFO F10

Dodatkowo przed uruchomieniem wyskakiwało by na powiedzmy 5s okno z informacją jaki klawisz trzeba nacisnąć aby zamknąć program.

Zamiast składni w CLI mogło by być zmiana w ikonie.
[#11] Re: Zamykanie programu na klawisz

@11111olo, post #10

A ile masz tych programów pootwieranych jednocześnie, że masz problem z ich zamykaniem? Jak napisał APC74, napisz jaki program konkretnie chciałbyś zamykać, a który stwarza problem...

Dodatkowo przed uruchomieniem wyskakiwało by na powiedzmy 5s okno z informacją jaki klawisz trzeba nacisnąć aby zamknąć program.

Uruchomisz z 5 programów rzadziej używanych i będziesz później pamiętał który jakim klawiszem zamknąć?
[#12] Re: Zamykanie programu na klawisz

@Dopuser, post #11

Uruchom program który NIE MA możliwości powrotu do WB i napisz jak go zamknąć?
[#13] Re: Zamykanie programu na klawisz

@11111olo, post #12

Jak program nie ma możliwości powrotu do WB to go możesz nie zamknąć, bo może robić na przykład takie brzydkie rzeczy jak zabicie całego systemu operacyjnego czy rysowanie swojego interfejsu na ekranie workbencza bez możliwości przywrócenia starej zawartości ekranu.

Żeby mieć naprawdę uniwersalne rozwiązanie trzeba by zrobić środowisko dla aplikacji, które odizoluje program od sprzętu lub zadba o to, żeby system po wyjściu został przywrócony do swojego poprzedniego stanu.

Do gier tę funkcję spełnia właśnie WHDLoad, czy do zwykłych programów jest coś takiego, tego nie wiem.
[#14] Re: Zamykanie programu na klawisz

@teh_KaiN, post #13

Taa, whdload tylko ile to zajmuje...
[#15] Re: Zamykanie programu na klawisz

@11111olo, post #12

Jeśli autor programu nie przewidział powrotu do WB to nie ma do czego wracać.
Podaj o jaki program chodzi.
[#16] Re: Zamykanie programu na klawisz

@Norbert, post #15

Autor nie przewidział bo na amidze tak dawno temu wszystko robiono - byle by działało.

Mi nie chodzi o konkretny program tylko czy da się to zrobić i jak?
[#17] Re: Zamykanie programu na klawisz

@11111olo, post #16

No zobacz, nie zauważyłem.

Jeśli program działa "pod systemem" to da się z niego wrócić do WB.

Powtórzę. Jaki to program?
[#18] Re: Zamykanie programu na klawisz

@11111olo, post #10

Widze ze tak bardzo potrzebujesz taki program ze nawet dales ogloszenie na gieldzie ppa.

Zainteresuj sie whdload. Jesli da sie zrobic wyjscie z gry ndos to i z tego tajemniczego tym bardziej. sie da.
Zapomnij jednak o multitaskingu. Whdload zatrzyma WB do czasu powrotu.
[#19] Re: Zamykanie programu na klawisz

@Norbert, post #18

Dałem. Jak nikt nie odpowie to będzie znaczyć że albo to takie trudne jest albo nikomu się nie chce.

Whdload zajmuje za dużo ramu.
[#20] Re: Zamykanie programu na klawisz

@11111olo, post #19

Nic nie obiecuję, na pewno nie na dniach, ale być może bym ten temat ugryzł. Chociażby żeby zobaczyć jak bardzo trudne będzie napisanie czegoś takiego.

Tylko najlepiej by było, gdyby ktoś zapodał największego skurczysyna wywracającego cały system i nie pozwalającego na powrót do czegokolwiek - będzie poletko testowe, jak z takim zadziała to i z każdym. :)
[#21] Re: Zamykanie programu na klawisz

@11111olo, post #16

Programy działające na własnym ekranie i zamykające system pisano dlatego, żeby umożliwić uruchomienie programu na podstawowej konfiguracji - Amiga nigdy nie grzeszyła nadmiarem RAMu i te kilkadziesiąt kilo odzyskane po ubiciu systemu mogło być kluczowe dla działania programu (np. umożliwiało narysowanie większego obrazka czy dłuższej animacji pod programami graficznymi, czy uruchomienie gry z muzyką itp.). Jeżeli program nie umożliwia powrotu do systemu to znak, że prawdopodobnie ubił go całego i po prostu nie ma do czego wracać. Jak już pisałem wcześniej było to spowodowane potrzebą wykorzystania każdego bajtu dostępnej pamięci niezbędnej do tego, żeby dany program/grę uruchomić na "gołej 500". To równanie w dół dało się szczególnie zauważyć na rynku gier, gdzie przycinano grafikę i co się tylko dało, byle tylko uruchomić grę na 500 - bo inaczej wydawca tego nie wydał ("bo kto to kupi?"). A skoro system pozwalał się z taką łatwością ubijać, to czemu z tego nie skorzystać i nie zyskać kilku dodatkowych bajtów na potrzeby programu.

Z innej beczki: niektóre programy napisane w AMOSie można "nauczyć" kultury pracy (znaczy się - multitaskingu) za pomocą NSA-Patchera (chyba tak nazywał się ten program) - ale zdaje się, że potrzeba do tego było CPU 020 (goła A1200 jako minimum o ile dobrze pamiętam). Polegało to na tym, że odpalałeś NSA-Patcher i wczytywałeś do niego program. NSA podmieniał w min pewne funkcje - w efekcie czego z uruchomionego AMOSowego programu dało się przejść do Workbencha i vice versa. Przetestowałem to w swoim życiu na kilku takich programach i o dziwo nawet działało.
[#22] Re: Zamykanie programu na klawisz

@teh_KaiN, post #20

Może to trochę drastyczny przypadek jakim jest demo ale w tej chwili nic innego nie mogłem znaleźć ;)

http://aminet.net/demo/funet/Tribbletrouble.lha

To demo normalnie się odpala na A1200 z WB po dwukliku więc nie ma raczej mowy że są jakieś kombinacje bo brakuje ramu itp.

Po odpaleniu tego dema nie da się go zakończyć przed czasem w żaden sposób.

Nie wiem czy zadanie jest trudne czy nie bo zupełnie nie znam systemu amigowego ale wstępnie choć możesz napisać jak wg Ciebie to wygląda?
[#23] Re: Zamykanie programu na klawisz

@11111olo, post #22

Ja bym podszedł do tego tak, że:

- Przy starcie programu właściwego odpala się mini program, który zrzuca newralgiczne części ramu na dysk twardy
- Program właściwy jest uruchamiany, w tle działa program nasłuchujący wciśnięcia danego klawisza*
- Po wciśnięciu klawisza program docelowy jest ubijany, ram na którym siedzi system jest przywracany do stanu poprzedniego za pomocą zrzutu z hdd

Problem jest zaznaczony gwiazdką. Mianowicie, system Amigi pozwala na dosłownie wszystko, zwłaszcza na wyłączenie multitaskingu. Skoro program wyłączy multitasking, to jak tu nasłuchiwać wciśnięcia klawisza? ;)

Do głowy mi przychodzi jakieś środowisko, które by wirtualizowało pewne rzeczy dla programu docelowego, tylko czy to niedopalona Amiga uciągnie w logicznym tempie? Raczej nie.

Jedyne co pozostaje to na żywca wstrzyknięcie dodatkowego kodu do pętli głównej programu, tak żeby ten sam nasłuchiwał wciśnięcia klawisza. Tylko że raczej tego rzetelnie z automatu zrobić się nie da, i to by tłumaczyło dlaczego trzeba czekać aż dana gra będzie obsługiwana przez WHDLoad. Hmmm...
[#24] Re: Zamykanie programu na klawisz

@teh_KaiN, post #23

Programy, które dadzą się zamknąć hot-keyem na Amidze to tzw. Commodities. Amiga OS to nie jest Windows, i nie można robić takich rzeczy jak zamykać cudze programy! Przecież wiąże się to ze stratą danych, czy projektu, nad którym się pracowało w danym programie. Program musi posprzątać po sobie, kiedy jest zamykany.

Program napisany jako Commodity umożliwia zamykanie go przez program Exchange. Commodity również umożliwia przypisanie dowolnej kombinacji klawiszy do otwierania jego interfejsu.

Jeśli chcesz przypisać kombinację klawiszy do wywołania jakiegoś programu to użyj polecanego FKey, który jest z systemem.

Programy pisane dla Workbencha, które otwierają okienko zwykle mogą być zamykane przez kombinację klawiszy po uaktywnieniu okienka. Zwyczajową kombinacją jest RAmiga + Q.

Ostatnia aktualizacja: 06.11.2013 23:58:05 przez Hexmage960
[#25] Re: Zamykanie programu na klawisz

@Hexmage960, post #24

W necie jest taki cytat "Amiga od zawsze miała system operacyjny"
Co z tego jak nie wnosił on nic a nic bo nie trzeba się trzymać absolutnie niczego czego dowodem są różne twory w postaci gier czy dem które działają tylko z dyskietki i do tego z DH0.

Widzę że sprawa jest bardziej skomplikowana niż sądziłem.

Co do tracenia danych to przerwanie działania programu było by to świadoma decyzja więc nie ma się czym przejmować ;)
[#26] Re: Zamykanie programu na klawisz

@11111olo, post #25

Poczytaj sobie w necie jakie właściwości/możliwości ma system operacyjny Amigi i będziesz wiedział dlaczego "twój" program nie powstanie.
Wiele Informacji znajdziesz juz w tym wątku.
[#27] Re: Zamykanie programu na klawisz

@Norbert, post #26

Śledzę i tak sądzę że nic z tego nie będzie.

Pomijając to w whdload jest napisane że procesor 68000 uniemożliwia zakończenie gry za pomocą klawisza. Dlaczego?
[#28] Re: Zamykanie programu na klawisz

@11111olo, post #27

Ehhh... Nie szybciej jest poszukać informacji w sieci niż się pytać tutaj i czekać? : KLIK
[#29] Re: Zamykanie programu na klawisz

@gorzyga, post #28

No i?
[#30] Re: Zamykanie programu na klawisz

@11111olo, post #29

No i wszystko jasne!
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