Newsgroup: it.comp.programmare.win32
Titolo: Controllare un appplicazione Con VC++

Salve a tutti e grazie in anticipo,
Avrei bisogno di controllare una applicazione come Winamp da codeice C++ utilizzando VC+ 6.0. Una volta eseguito il brano (utilizzando system(PATH1winamp.exe nomeFile)) non riesco a chiudere l'applicazione per riaprirla con un altro brano.
dovrei forse utilizzare CreateProcess() e WaitForSingelObject() per sincronizzarmi ma non riesco comunque a decidere quando il brano e' terminato. Se avete un consiglio anche una opzione della riga di comando per chiudere un processo alla sua esecuzione rispondetemi grazie!!

 wrote in message
news:83l0c2$4u7$1...@leporello.cs.unibo.it...

E' impossibile catturare un evento che avviene in un altro programma, a meno
che il programma non sia predisposto
per farlo, cioč abbia ad esempio un interfaccia COM.
Invece per chiudere una finestra basta mandargli un WM_CLOSE ( con
PostMessage o SendMessage ).
L'approccio del WaitForSingleObject() č anche sbagliato perche' l'API serve
per singronizzare i thread, non i Task.
8

 per singronizzare i thread, non i Task.
No, le API WaitXyz sono perfettamente appropriate anche per
sincronizzare fra loro processi separati, non _solo_ per sincronizzare
thread interni allo stesso processo.
In particolare, usare l'handle di un altro processo in una
qualsiasi API di wait attende la _terminazione_ di quel
processo, il che, a volte, fa veramente comodo.
Alex

 per riaprirla con un altro brano.
Se il tuo interesse e` specifico per il WinAmp, ti consiglio di scrivere un
plugin anziche` usare direttamente le API di Windows. Su 
www.winamp.com
 puoi
trovare tutta la documentazione per farlo (in sostanza il WinAmp puo` essere
"pilotato" in modo piuttosto flessibile da una serie di messaggi).
--
Bye! Lorenzo Lutti
http://www.geocities.com/SiliconValley/Peaks/6258/

 wrote in message
news:83l80o$7bg$2...@serv1.iunet.it...


Diciamo le cose con i puntini sulle "i" :
WaitXyz  puo' usare gli handle di processi separati SOLO se esistono legami
di parentela e
se il processo genitore ha dato il consenso di farlo mettendo adeguati
diritti.
Questo non è il caso "Enrico Brighi" che non avendo scritto lui
l'applicazione figlia non ha nessun controllo
sugli eventi che ne accadono all'interno, se non quello di chiusura .
CMQ se escludiamo il sincronismo di chiusura di un app figlia, WaitXyz serve
per sincronizzare i thread.
Questo e' un caso utile ma particolare, che se non specificato, rischia di
dare false indicazioni di come si
sincronizzano iprocessi in win32.
8


Mettiamo ancora i puntini sulle "i" :-)
Puoi utilizzare queste api per sincronizzare tra loro i thread, ma anche i
processi, assegnando agli oggetti un nome (il parametro che normalmente si
passa a NULL per gli handle condivisi tra thread, per l'appunto), così che
vai processi possano fare riferimento alla stessa istanza dell'oggetto di
sincronizzazione. Questo sistema è molto utilizzato, ad esempio, per gestire
l'esecuzione delle applicazioni in una sola istanza oltre che, ovviamente,
gestire l'accesso condiviso a file-database-blocchi di memoria-porte
seriali-... tra più processi.
Ovviamente la sincronizzazione a questo livello richiede che tutte le
applicazioni "esportino" gli oggetti di sincronizzazione necessari
assegnandogli un nome.
P.S. mi hai fatto sorgere un dubbio...ma tu come fai a sincronizzare tra
loro vari processi?
--
Valter Minute
minute-at-fortech.it
 (the reply address of this message is invalid)