Newsgroup: it.comp.lang.delphi
Titolo: Eliminare il programma dal "gestione attivita'"

Ciao a tutti,
  ho questo problema che al momento non riesco a risolvere.
Lancio il programma e alla partenza esegue delle operazioni preliminari, tra 
le quali, il controllo della risoluzione video.
Questo avviene all'accensione del pc, con altri programmi nell'avvio 
automatico.
Non capisco il perche' ma ogni tanto il programma non parte, la main form 
non viene visualizzata cosi' come la possibilita' di cambiare la risoluzione 
video.
Il problema e' il seguente, seppur non partendo il programma (senza errori 
visualizzati) rimane in "memoria" e per terminarlo devo aprire il gestione 
risorse e terminarlo da li.
Questa situazione ambigua capita solo su 2 pc in una rete di 6, tutti hanno 
la stessa configurazione, marca e modello!!!
Da non credere !!
 
Avete qualche suggerimento per migliorare l'uscita del programma in modo 
tale che se la main form non viene visualizzata il processo viene eliminato?
 
Non so se mi sono spiegato bene .....
 
Grazie
 
Ciao
 
Daniele 
 

Ciao,
anche a me capita occasionalmente di avere che un mio programma abbia questo comportamento.
 
Ho riscontrato che in realtà è dovuto più all'irruenza dell'operatore che non ad un errore del programma. infatti capita quando fa più volte doppio click sull'icona per aprirlo.
 
Non ho però ancora trovato un modo per eliminare il problema, anche se qualche idea in testa c'è...
 
Nel tuo caso vedo che lanci il programma in esecuzione automatica, quindi non è un problema di operatore
 
Potrebbe però essere che il sistema non sia ancora completamente "partito": vedo infatti che a volte l'antivirus blocca alcune operazioni fintanto che non ha finito le sue operazioni preliminari.
 
Hai provato a disattivare per un periodo l'antivirus per capire se può dipendere da questo?
 
Se vuoi una statistica dei problemi che incontro con le mie installazioni, nel 70% dei casi sono collegate agli antivirus
 
Un altro 20% dipende dalle stampanti... qualcuno mi dovrebbe spiegare perché un driver di una stampante deve pesare qualche gigabyte... cosa caricano con quei driver è un mistero

 qualche idea in testa c'è...
Io ho tentato di risolvere il problema andando a controllare i programmi in 
esecuzione.
Se in quella lista e' presente il nome del programma che si sta lanciando, 
il programma termina.
 
Grazie per l'interesse.
 
Ciao
 
Daniele 
 

Ciao Daniele,
 
non so se può esserti utile ma in alcuni programmi impostavo la form su AlwaysOnTop (ti riferivi a questo quando parlavi di finestra modale?), in modo che l'utente possa vederla e non rilanciare una seconda istanza del software.
 
Potresti anche provare ad inserire un timer, al fine di posticipare l'esecuzione della tua procedura e permettere al sistema di caricare completamente i processi. 

 si ... dovrebbe evitare una seconda istanza.
 
Se devi consentire una sola istanza, usa un mutex nel programma 
principale. L'esecuzione si interrompe sul nascere.
 
 
program Unosolo;
 
uses
   Forms,
   windows,
   ...
 
{$R *.res}
 
begin
 
   CreateMutex(nil, TRUE, 'IlClientCheGiraDasolo');
   If GetLastError = ERROR_ALREADY_EXISTS then halt;
 
   Application.Initialize;
   Application.CreateForm(TformUnosolo, frmUnoSolo);
   Application.Run;
 
 
end.
 
-- 
Virgilio Lattanzi, TSComm srl