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
136 lines
4.1 KiB
Plaintext
Executable File
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");
|
|
|
|
|
|
|
|
|
|
|
|
|