Newsgroup: it.comp.lang.delphi
Titolo: Application.Handle = Baco????

Come da help di Delphi5 Enterprise, la proprietà Application.Handle dovrebbe
restituire l'Handle della form principale...ma da prove (e mal di testa
conseguente), eseguite, mi risulta che Application.Handle <>
Applicatin.MainForm.Handle e, di conseguenza anche da Self.Handle (se sono
dentro la form pricipale)!!
E' un baco di Delphi o semplicemente (!) un errore dell'Help???
Bye

 wrote

l'handle dell'applicazione è diverso dall'handle delle sue form. Sono due
cose diverse.
Ti saluto.....ciao ciao !!
Antonio Tarolla

 cose diverse.
Ho capito, ma nell'help di D.5, viene detto che Application.Handle
restituisce l'Handle della MainForm, cosa non vera.
Mi sai fare un esempio di cosa può servire conoscere l'handle di un'intera
applicazione (non è una provocazione, sono solo curioso, xchè a pensarci non
riesco a trovare dei risvolti pratici)
Bye

 riesco a trovare dei risvolti pratici)
di esempi ce ne sarebbero tanti anche se ovviamente non mi vengono in mente
tutti, ma vedrai che se capisci il concetto saprai quando usare questo
benedetto handle.
Per iniziare, l'handle dell'applicazione ti può servire per visualizzare la
famosa finestra di progetto ( invisibile ) di cui ti parlavo sopra.
Oppure se vuoi nascondere  la tua applicazione dalla barra delle
applicazioni, ti basta una chiamata alla "ShowWindow". Cosa gli passi a
quest'API? Indovina un po' ?
Infine pensa alla coda dei messaggi dell'applicazione. Se un hook manda dei
messaggi alla tua applicazione, lo farà tramite il suo handle
ad esempio, quindi gli interessa saperlo !!
Poi ce ne sono altri di casi. Ti posso dire che non è usatissimo, però si
usa. ( anche se dipende da ciò che si vuol fare )
Ora ti saluto sperando di essere stato chiaro togliendoti la curiosità !!
:-)))
Ciao ciao...
Antonio Tarolla

usa. ( anche se dipende da ciņ che si vuol fare )
Uno dei casi piu' conosciuti e' quello riguardante la
creazione di form all'interno di una DLL.
Facendo si' che questi form abbiano come handle delle
"parent window" quello dell'applicazione, essi potranno
essere a tutti gli effetti un'estensione della nostra
applicazione.
A livello visivo, verranno fatte vedere, iconizzate,
abilitate, disabilitate, in accordo con quanto succede
all'applicazione.
--
CyberWalkie - walkietalkie(at)
libero.it

 all'applicazione.
generalmente, ma negli hook più semplici che trasferiscono pochissimi dati,
non scomoderei la memoria condivisa.
P.S. Buono l'esempio dell'handle dell'applicazione riferito alle DLL !!
Ti saluto.....ciao ciao.
Antonio Tarolla

non scomoderei la memoria condivisa.
Ci vuole *comunque* un meccanismo di IPC se si vuol far
comunicare un hook system-wide (anche i + semplici) con la
propria applicazione.
--
CyberWalkie - walkietalkie(at)
libero.it

 propria applicazione.
posso usare benissimo un mio messaggio registrato per inviare i dati
dall'hook all'applicazione.
Ti saluto....ciao ciao !!
Antonio Tarolla

dall'hook all'applicazione.
L'hook system-wide, per definizione, parla con *tutti*, non con
una singola applicazione.
--
CyberWalkie - walkietalkie(at)
libero.it

 una singola applicazione.
Che significa che l'hook system-wide "parla con tutti"? L'hook system-wide
non è altro che una DLL mappata in diversi spazi di indirizzamento.
Quello che dice Antonio è molto semplice: ciascuna applicazione in cui lo
hook è presente richiama internamente RegisterWindowMessage() e registra un
nuovo messaggio (o, se vuole, può utilizzare alternative come WM_USER + K),
questo messaggio viene postato alla tua applicazione (intesa come modulo EXE
principale) o a tutte (la "costante" di Broadcast) quando si verifica un
evento relativo al tipo di hook installato, a quel punto la tua applicazione
(gestendo application.onmessage) sa che si è verificato l'evento X nel
processo Y ...
--
- Carlo -
c.b...@libero.it

 una singola applicazione.
sono pienamente d'accordo con ciň che ha detto Carlo Bertuccini.
L'hook system-wide non č altro che un "uncino" che si aggancia ad ogni
applicazione, ma non č detto che deve per forza scambiarci informazioni. Non
č d'obbligo che l'hook invii dati inerenti a ciň che acquisisce.
Io posso installare un hook system - wide che fa solo il suo lavoro di hook
ma non invia dati di nessun genere a nessunissima applicazione.
Non mi sembra ci sia altro da dire.
Forse tutto ciň lo davi per scontato e non ci siamo capiti sin dall'inizio.
Ti saluto....ciao ciao
Antonio Tarolla