Newsgroup: it.comp.programmare.win32
Titolo: Help Chiudere un'applicazione

Come da oggetto, qualcuno mi sa dire che comando utilizzare per dire a
windows di chiudere un programma. Magari se è possibile in un file .ini.
Grazie.
Gia
P.S. Avrete capito che sono un principiante :-(


già...
non ho capito cosa intendi fare col file INI
per chiudere un'applicazione gli devi mandare il messaggio WM_QUIT (anzi,
meglio un WM_SYSCOMMAND con SC_CLOSE)
l'handle della finestra lo puoi trovare con FindWindow se conosci il titolo
della finestra, o la classe della finestra
--
ciao
XAERO [*]
"Se vuoi renderti conto del valore del
denaro, prova a chiedere un prestito"
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCA/CM/CS/CC/E/O d?(-) s+:-- a--->? C++++(+)$@ UL-(--) P>++ L+() E-- W+++$@
N++@ o-- K- w+++(++++)@ O--- M V? PS+++ PE-(--) Y? PGP>++ t? 5? X+ R- tv-
b+(++) DI? D++ G- e !h !r y?
------END GEEK CODE BLOCK------

 ha scritto nel messaggio
news:944aaf$c92mq$1...@ID-51253.news.dfncis.de...


meglio un WM_SYSCOMMAND con SC_CLOSE)
NO !
Il messaggio da mandare NON E' WM_QUIT, E' WM_CLOSE (o WM_SYSCOMMAND
con SC_CLOSE).
Lo si e' detto molte volte qui dentro.
--
Andrea Laforgia (ICQ 87230455)
http://www.geocities.com/AndreaLaforgia
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."

windows di chiudere un programma.
In realta' non c'e' un'istruzione precisa.
Dipende da quante/quali finestre ci sono (se ci sono).
Dipende dal tipo di applicazione.
Ci sono casi, per esempio, in cui c'e' bisogno di un kill brutale.


 ha scritto nel messaggio
news:fk566t405qfitkoo0...@4ax.com...


 con SC_CLOSE).
mi sono sbagliato


 ha scritto nel messaggio
news:947a80$cmb2k$2...@ID-51253.news.dfncis.de...


 poco e niente. Grazie.
Devi spedire il messaggio WM_CLOSE all'hwnd della finestra che vuoi chiudere
(hwnd che ti sarai ricavato in qualche modo). Vai a vedere la documentazione
relativa alla SendMessage sull'MSDN.
Ciao,
Fra.

poco e niente. Grazie.
Scusa, hai ragione :), i miei msg sono scarsi di consigli.
Le finestre, sotto Windows, sono in grado di ricevere informazioni 
sotto forma di messaggi.
In realta' il meccanismo e' piuttosto complicato.
Ogni processo, sotto Win32, e' un contenitore di thread (ne ha sempre
almeno uno, detto "primario").
Questo (o questi) thread puo' (possono) creare una o piu' finestre.
Ogni finestra appartiene a una certa "classe" di finestre.
Ad ogni classe e' associata una "window procedure" che non e' altro
che una funzione di callback richiamata da Windows stesso, ogni volta
che si spedisce un messaggio (tramite l'API "DispatchMessage") a una
determinata finestra appartenente a quella classe.
La prima volta che un thread particolare richiama una funzione di
gestione dei messaggi di Windows, il sistema operativo crea una "coda
di messaggi" per quel thread.
Il thread, molto probabilmente, fa questo quando inizio il proprio
ciclo di estrazione dei messaggi dalla coda.
Il ciclo di estrazione dei messaggi consiste nell'estrazione (mediante
"PeekMessage" o "GetMessage"), esegue operazioni particolari per i
messaggi di tastiera (con "TranslateMessage") e infine chiama la
"DispatchMessage" che non fa altro che richiamare la "window
procedure" precedente.
In ogni "window procedure" non c'e' altro che un grande blocco switch
in cui si assume un comportamento diverso per ogni messaggio che
arriva.
All'arrivo del messaggio WM_CLOSE viene intrapresa tutta una serie di
azioni, che non fanno altro che inserire nuovi messaggi (WM_DESTROY e
WM_QUIT) nella stessa coda e quindi forzare un richiamo alla stessa
"window procedure".
Al WM_QUIT corrisponde un PostQuitMessage che non fa altro che
attivare un flag che blocca il funzionamento di PeekMessage e
GetMessage per quel thread, forzando l'uscita dal ciclo dei messaggi.
Fiuuuuuuu.... mi rendo conto che la cosa, detta cosi' risulta alquanto
incomprensibile, e quindi ti rimando a MSDN per maggiori informazioni
;)


 ha scritto nel messaggio
news:J2J96.84378$eB2.6...@news.infostrada.it...


 "PeekMessage" o "GetMessage"), esegue operazioni particolari per i
qual'è la differenza?
dall'help ho letto che GetMessage() preleva un messaggio dalla coda, e
spedisce i messaggi arrivati finchè non ce n'è uno disponibile per essere
prelevato (non ho capito un c... praticamente)
e riguardo a PeekMessage(), dice che non aspetta. la mia interpretazione:
"PeekMessage() è asincrona, cioè viene chiamata e subito l'esecuzione
ritorna al punto dove si è chiamata la funzione.
in poche parole che significa? GetMessage() ritorna qualcosa solo se c'è un
messaggio nella coda, mentre se la coda è vuota e chiamo PeekMessage() non
roitorna niente?
--
ciao
XAERO [*]
"Se vuoi renderti conto del valore del
denaro, prova a chiedere un prestito"
-----BEGIN GEEK CODE BLOCK-----


qual'è la differenza?
E' semplice :
- GetMessage mette l'applicazione in attesa, sino a quando non c'e' un
messaggio.
- PeekMessage non attende e se non c'e' messaggio restituisce NULL.
C'e' un articolo di Bob Gunderson su MSDN (molto vecchio per la
verita') che si intitola "GetMessage and PeekMessage Internals".


e a che puň servire PeekMessage() ?
se lo sostituisco a GetMessage() nel loop dei messaggi non si dovrebbe
impallare l'app?
a che altro possono servire queste api (anche all'esterno del loop?) ?
ha senso scrivere la WndProc vuota, e smistarsi i messaggi uno per uno nel
loop, traducendoli a mano? (naturalmente in un'app con una sola finestra)
[cosě... giusto per fare qualche pazzia :) ]


[cosě... giusto per fare qualche pazzia :) ]
Se ti pagano ha senso :)


 [cosě... giusto per fare qualche pazzia :) ]
ROTFL :)
Bow-wow
Killer

 Se usi GetMessage(), il loop si blocca ogni volta
In casi come questi e` sempre meglio suddividere l'esecuzione in vari
thread, cosi` puoi continuare a usare la GetMessage() senza il bisogno
di fare dei polling inutili. La Microsoft ci ha regalato i thread,
usiamoli... :-)
PeekMessage() puo` avere degli utilizzi piu` carini e "sottili": ad
esempio quando sei *dentro* alla window procedure ti potrebbe essere
comodo osservare (e opzionalmente rimuovere) certe categorie di messaggi
nella/dalla sua stessa coda. Non per niente si chiama "Peek" Message...
;-)
---
Bye! Lorenzo Lutti
http://antani.virtualave.net/