alex 0c0abd6589 This commit was generated by cvs2svn to compensate for changes in r5942,
which included commits to RCS files with non-trunk default branches.

git-svn-id: svn://10.65.10.50/trunk@5943 c028cbd2-c16b-5b4b-a496-9718f37d4682
1998-01-15 16:39:02 +00:00

136 lines
4.1 KiB
Plaintext
Executable File

INFORMAZIONI SULL'UTILIZZO DELLE DLL PER CHIAMARE PROGRAMMI ESTERNI
===================================================================
Le DLL utilizzabili sono 2:
AGAEXEC.DLL (Analoga alla AGALIGHT.FLL)
AGA32.DLL : questa DLL necessita di un secondo componente: AGA16.DLL (vedi sotto la spiegazione)
AGALIGHT.DLL viene utilizzata per programmi a 16 bit
AGA32.DLL viene utilizzata per programmi a 32 bit su piattaforme a 32 bit (Win95 WinNT)
AGA16.DLL viene utilizzata per programmi a 32 bit su piattaforme con Win32s (Windows 3.11 + Win32s)
AGA32.DLL e AGA16.DLL vanno SEMPRE in coppia in quanto inerenti a programmi a 32 bit.
Quindi per programmi a 16 bit si utilizza AGAEXEC.DLL, mentre per programmi a 32
si utilizza AGA32.DLL, la quale a sua volta si accorgera' automaticamente di quale
tipo di piattaforma si tratti, collegandosi ad AGA16.DLL nel caso vi siano chiamate a funzione
Aga_exec(). Il motivo per il quale e' stata realizzata la versione per Win32s e' che le funzioni del
Kernel di Windows a 32 bit utilizzate in AGA32.DLL non hanno un corretto funzionamento in Win32s.
Pertanto e' stato necessario un thunking a 16 bit.
FUNZIONI ESPORTATE
------------------
int Aga_setvar(const char* p, const char* u, const char* t)
const char* Aga_workdir()
int Aga_wakeup()
int Aga_exec(const char* p)
*******************************************************
Aga_setvar(const char* p, const char* u, const char* t)
*******************************************************
Serve per inizializzare alcune variabili interne alla DLL.
Le stringhe da passare sono, in ordine, le seguenti:
p : contenuto della variabile d'ambiente PREFPATH
u : nome dell'utente con il quale viene chiamato il programma PRASSI
t : contenuto della variabile d'ambiente TMP o TEMP se non esiste la precedente
La sua chiamata e' obbligatoria se si intende utilizzare anche AGA_WORKDIR(),
solitamente la si applica all'inizio del programma. Se si utilizzano solo
Aga_wakeup() o Aga_exec() non e' necessario il suo utilizzo.
Esempio.
...
strcpy(a,"");
strcpy(a,getenv("PREFPATH"));
if (!strlen(a))
strcpy(a,"PREFIX.TXT");
strcpy(b,"PRASSI");
strcpy(c,"c:\\tmp");
Aga_setvar(a,b,c);
...
**************************
const char* Aga_workdir()
**************************
Serve a ritornare il prefisso dati corrente dei programmi PRASSI, composto
tramite i contenuti di PATHPREF.INI e il file identificato dal contenuto della
variabile d'ambiente PREFPATH.
Esempio:
Il file PATHPREF.INI presente sotto il direttorio programmi PRASSI contiene f:\dati
La variabile PREFPATH vale c:\prassi\prefix.txt
Il file C:\PRASSI\PREFIX.TXT identificato da PREFPATH contiene 00001a come ditta corrente.
Il risultato della chiamata a AGA_WORKDIR sara'
f:\dati\00001a
****************
int Aga_wakeup()
****************
Serve per togliere dall'attesa il programma chiamante. La chiamata
va effettuata prima dell'uscita del programma. Questa funzione
viene utilizzata all'interno del programma chiamato; e' tipico
l'utilizzo in coppia con la Aga_exec(), che permette di eseguire un
programma figlio e di attendere la fine della sua esecuzione.
Tutti i programmi PRASSI effettuano le stesse istruzioni della Aga_wakeup()
prima della fine, in modo che eventuali programmi chiamanti possano poi
ripristinare il loro stato.
Esempio:
Programma padre Programma figlio
START
|
Istruzione 1
|
Aga_exec()---------------> INIZIO
|
Istruzione 1
|
Aga_wakeup()
|
Istruzione 2 <------------- FINE
|
FINE
***************************
int Aga_exec(const char* p)
***************************
Serve per eseguire un programma figlio ed attendere la sua fine (effettua
una WinExec() sincrona).
Il parametro p contiene il pathname completo del programma da eseguire.
Esempio:
Aga_exec("ba1.exe /uPRASSI");