Dalej: Poczta elektroniczna
Wyżej: Drukowanie plików
Poprzednio: lpr
Aby dokonać przechwycenia danych wysyłanych do drukarki przez
programy pracujące pod kontrolą systemu operacyjnego MS DOS musi być
zastosowany program rezydentny predir. Jest on stosunkowo mały
(zajmuje ok 7 kB) i aby móc zrealizować wszystkie swoje funkcje
współpracuje z dwoma programami onpredir i dopredir. Nie
wykonują one żadnych istotnych czynności poza interpretacją poleceń
użytkownika i przekazywaniem ich programowi predir.
Użycie:
predir [config] [debug] [help] [hotkey opt] [memsize
xx] [noselect opt]
[oneof opt] [onexit opt] [timeout
opt] [printer port] [prog program]
[report] [spool dest] [swap dest]
[unload]
predir -?|-version
Znaczenie parametrów jest następujące:
- config
- ładuje standardową konfiguracje zapisaną w
zbiorze konfiguracyjnym,
- debug
- wyświetla dodatkowe informacje na temat
parametrów pracy programu,
- help
- wyświetla podstawowe informacje o programie,
- hotkey opt
- włącza/wyłącza rozpoczęcie
drukowanie po naciśnięciu klawiszy Ctrl-LeftShift-RightShift;
opt przyjmuje wartości on lub off,
- memsize xx
- określa wielkość obszaru pamięci
(dyskowej, w kilobajtach) używanej przez program do przechowywania
wydruków na dysku; 63 < xx < 129,
- noselect opt
- zezwala lub zabrania ignorować
zawartość przekazywaną w rejestrze DX podczas wywoływania Int17,
- oneof opt
- włącza i wyłącza rozpoczęcie
drukowania po wykryciu znaku EOF (end of file),
- onexit opt
- włącza/wyłącza rozpoczęcie drukowania
po zakończeniu programu użytkowego,
- printer port
- określa drukarkę, nad którą
predir przejmuje kontrolę; dopuszczalne wartości: PRN, LPT1, LPT2,
LPT3, LPT4 lub cyfra od 0 do 3 (0=LPT1, 3=LPT4); wyłączenie
drukowania następuje gdy port przyjmuje wartość off,
- prog program
- określa nazwę programu lub zbioru
.bat wykonującego funkcję przesłania zbioru na zdalny komputer
i wydrukowania go; nazwa powinna być pełną nazwą pliku,
- report
- program wypisuje aktualną konfigurację,
- spool dest
- określa kartotekę i/lub nazwę zbioru
tymczasowego używanego do przechowywania ,,przechwyconego'' wydruku
(normalnie nie musi być używane),
- swap dest
- określa kartotekę i/lub nazwę zbioru
używanego do zapisu zawartości części pamięci operacyjnej na czas
drukowania (normalnie nie musi być używane),
- timeout opt
- ustawia opcję rozpoczęcia
automatycznego drukowania, gdy program użytkowy przez określony czas
(wyrażony w sekundach) nie wysyła żadnych informacji do drukarki; aby
możliwość tę wyłączyć należy ustawić czas na 0,
- unload
- usuwa predir z pamięci, jeżeli jednak po
załadowaniu go do pamięci załadowano inne programy rezydentne -
usunięcie jest niemożliwe.
Działanie programu predir jest następujące: po uruchomieniu go,
ładuje się rezydentnie do pamięci, przechwytując przerwanie Int17
(służące do komunikowania się programów użytkowych z drukarką).
Następnie przechwytuje wszystkie odwołania do drukarki, zapisując
dane (które normalnie przesyłane są do drukarki) w zbiorze dyskowym.
Zawartość zbioru jest następnie drukowana gdy nastąpi jeden z
warunków:
- użytkownik zażąda wydruku naciskając specjalną sekwencję
klawiszy (hotkey on) lub uruchomi program dopredir,
- program użytkowy wyśle znak końca zbioru do drukarki (
oneof on),
- program użytkowy zakończy pracę (onexit on),
- program użytkowy przez określony czas nie wysyła informacji do
drukarki (timeout opt),
W najprostszej wersji drukowanie wykonywane jest z wykorzystaniem
programu lpr (na domniemanej drukarce). Można utworzyć
specjalne zbiory komend pozwalające zmieniać jego zachowanie.
Na czas wydruku (gdy trzeba uruchomić program lpr) predir
musi zwolnić część pamięci operacyjnej - wykorzystywany jest zbiór
pośredni na dysku; uruchomienie programu lpr nastąpić może
,,równocześnie'' z pracą programu użytkowego, i jest to potencjalnie
niebezpieczne.
Po uruchomieniu programu predir jego zachowanie można zmienić
za pomocą programu onpredir (używającego dokładnie takich
samych jak dla predir parametrów).
Dalej: Poczta elektroniczna
Wyżej: Drukowanie plików
Poprzednio: lpr
Wojciech Myszka
pią, 14 lis 1997 11:12:41