Newsgroup: it.comp.programmare.win32
Titolo: Handle e pid....

Salve a tutti......ho bisogno di confrontare se il mio programma e' gia
in esecuzine,e se e' gia in esecuzione terminare l altro.Con
GetCurrentProcessId ottengo l handle del mio programma di partenza , il
nome del processo, e poi lo vado a confrontare con una lista di handle
di programmi in esecuzione. l'handle lo utilizzo per non terminare il
mio programma invece dell altro.....
Il problema si pone quando cerco di confrontare una variabile  unsigned
long(dove risiede il pid del programma) e una variabile HWND.....C'e
modo di convertire o confrontare una variabile di tipo handle con una
long?
Grazie a tutti

long?
Hai le idee molto poco chiare.  Tu stai confrontando il PID del
processo con ciascuno degli handle delle top level window nel sistema.
Questo è illogico, perché il pid e l'handle di finestra hanno
significati diversi, nel sistema e non sono confrontabili tra loro.

 long?
un semplice cast, cosa che spero tu non faccia mai.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Ok grazie mille a tutti.....e la prima volta che provo a programmare
per windows ed aver necessita di fare una cosa del genere....Sapreste
consigliarmi un buon libro sulla programmazione in windows?

 consigliarmi un buon libro sulla programmazione in windows?
boh, sempre studiato su MSDN io... :|
ho sentito spesso parlare del libro di Charles Petzold ma non so dirti
nulla; ad ogni modo ti consiglio di reperire documentazione in inglese.


ho sentito spesso parlare del libro di Charles Petzold [...].
Il libro di Petzold è un classico (da leggere in lingua originale, ché
la traduzione Jackson fa veramente pena), però parte veramente dalla
calce e dai mattoni.  Probabilmente, è meglio orientarsi sul proprio
sistema di sviluppo.  In passato c'erano libri di Jeff Prosise che
affrontavano bene la programmazione con Visual C++.

 in esecuzine,e se e' gia in esecuzione terminare l altro.
Se ho capito bene tu vuoi evitare di lanciare due volte lo stesso programma?

FabioDury ha scritto:


in tal caso dovrebbe usare il classico sistema del mutex, ma da quanto ha
scritto lui non vuole evitare di lanciarlo due volte, vuole terminare
brutalmente un'altra eventuale istanza del suo programma in esecuzione. si
tratta di un comportamento decisamente insensato (se avvio cinque istanze
tutte una subito dopo l'altra queste si terminano a catena? a cosa
dovrebbe servire?) che comunque se proprio necessario può essere
implementato non senza l'uso di qualche forma di IPC perché terminare con
TerminateProcess è da evitare.


 
Sono d'accordo. Il mio consiglio infatti era quello di usare i Mutex in 
caso lo scopo fosse stato quello di evitare di avere due istanze dello 
stesso Progz.
Se è come dici tu in effetti non capisco perchè (dovrebbe dircelo Lui). 
In ogni caso potrebbe registrare un messaggio WM_USER+qualcosa e usarlo 
per comunicare con l'altro Progz già in esecuzione per gestire 
l'auto-chiusura "pulita" (Così come aveva già consigliato Andrea Laforgia)

Grazie a tutti...Ho risolto il problema utilizzando il mutex...il
problema era che non conoscevo l esistenza di questo metodo...all
inizio del programma faccio un controllo e se creando il mutex mi da
errore allora termino il programma...
saluti e grazie a tutti