Newsgroup: it.comp.lang.delphi
Titolo: portare finestra in primo piano

Ciao a tutti, domandone delle 17.35
Da molto nelle mie applicazioni inserisco il controllo per fare in modo che
esista una sola istanza "currently running" e con la seguente
istruzione
      OpenIcon(FindWindow(Nil,'MiaApplicazione'));
riesco a ingrandire la finestra,
ma non riesco a metterla in primo piano, come posso fare? dai datemi
un'apina... :))))

 un'apina... :))))
Sono buono, te ne do' 5:
BringWindowToTop
SetForegroundWindow
SetActiveWindow
SetWindowPos
ShowWindow
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
Procedure ForceForeground (hWnd : HWND);
Begin
 PostMessage (GetDesktopWindow,WM_SYSCOMMAND, SC_HOTKEY, hWnd);
End;
Funziona su W9x/Me/2k. Non l'ho provata su NT4 e XP.
Ciao,
Davide DG.
-- 
All resistance is futile! Prepare to be disassembled !

 ShowWindow
Non ci metterei la mano sul fuoco ... dovrei prima fare un paio di prove.
--
- Carlo -
c.b...@libero.it

 Funziona su W9x/Me/2k. Non l'ho provata su NT4 e XP.
Confermo sia NT che XP


Non ci metterei la mano sul fuoco ... dovrei prima fare un paio di prove.
A suo riguardo:
SW_SHOWNORMAL	
Activates and displays a window. If the window is minimized
or maximized, Windows restores it to its original size and
position. An application should specify this flag when
displaying the window for the first time.
Come vedi, puo' fare cio' che viene chiesto.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

 Come vedi, puo' fare cio' che viene chiesto.
Sinceramente non lo vedo.
Metti un timer nella tua applicazione che a distanza di X secondi richiami
tale funzione con parametri Form1.handle e SW_SHOWNORMAL, copri la form con
altre finestre. Non verrà messa in primo piano nessuna form.
Già che ci sei, prendi la soluzione proposta da Davide DG, dopodichè metti
un timer nella tua applicazione che a distanza di X secondi richiami tale
funzione con parametro Form1.handle e copri la form con altre finestre.
Verrà subito messa in primo piano.
--
- Carlo -
c.b...@libero.it
ps: il tuo tono mi è sembrato un tantino polemico.

Ehm... hey, non inizieremo mica un flame per sta roba vero?
/////////
Il problema presentato da David Marcucci NON E' assolutamente banale.
Questo perchè il comportamento delle API che ha citato Andrea NON segue la
descrizione che ne dà Microsoft. 
A dire il vero mi pare di ricordare un "remarks" recente sulla MSDN online
in cui si avverte che, "siccome l'utente va tutelato, il sistema deve
essere user friendly, ecc. ecc.", allora una finestra non può essere
portata in primo piano se non per sua volontà (alt-tab o clic del mouse),
ma si limiterà a "lampeggiare" sulla barra delle applicazioni. 
Questo ovviamente scassa le paxxe al povero programmatore...
A suo tempo mi scontrai con questo problema... la funzione che ho proposto
funziona perchè ... perchè è un barbatrucco, naturalmente! 
***Siccome un desktop è la Parent Window di tutte le finestre che stanno
su quel desktop, allora basta "convincerlo" ad attivare "una delle sue
finestre" (vedi documentazione del messaggio WM_(SYS)COMMAND e parametro
SC_HOTKEY). 
Ciao!!


 funziona perchè ... perchè è un barbatrucco, naturalmente!
Non è necessario nessun barbatrucco ... prova questa:
SetWindowPos(Form1.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE or SWP_NOMOVE);
Ciao! :-)
--
- Carlo -
c.b...@libero.it
btw: Hai letto la mia risposta al tuo mex nel thread "Impedire
l'eliminazione dei file"? Ripeto, se hai un trucco ...

Il mio tono era polemico perchè quello di Andrea era tale.
Il mio tono non era affatto polemico.


 Il mio tono non era affatto polemico.
siamo persone adulte e possiamo anche evitare di prenderci in giro. Non
ripeteresti la stessa frase per ben 4 volte ad una persona a meno che tu non
la reputi stupida o la vuoi far sentire tale.
Comunque per me non è successo nulla, e se ho interpretato male il tuo tono
chiedo scusa.


 chiedo scusa.
Ecco bravo, hai interpretato male.
Scuse accettate.


 Il mio tono non era affatto polemico.
Premesso che non c'entro niente....
La mettiamo ai voti ?
Un po' di umiltà in più da parte di tutti, please.
:-)

 l'eliminazione dei file"? Ripeto, se hai un trucco ...
no sorry, ora vedo :)


Ciao, mi dice: undeclared identifier : WM_SYSCOMMAND, che uses devo
includere?
Fra parentesi, a rega', non vi arrabbiate per queste bischerate (sono
fiorentino si sente?) sennň non vi domando piů nulla :PP
(non credo sennň č meglio che faccio festa ;) )

Scusa, ho scoperto, mancava la messages..... che tontolone che sono...
GRAZIE DI TUTTO RAGAZZI