Ciao raga,
come si fà a tenere una applicazione sempre in primo piano, come il taskmanager?
Ciao raga,
come si fà a tenere una applicazione sempre in primo piano, come il taskmanager?
Ti scrivo come in VB6 si poteva tenere in primo piano magari ti puo servire
codice:Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Public Const SWP_FRAMECHANGED = &H20 Public Const HWND_TOP = 0 Public Const HWND_TOPMOST = -1 Public Const HWND_NOTOPMOST = -2 Public Const SWP_DRAWFRAME = SWP_FRAMECHANGED Public Const SWP_HIDEWINDOW = &H80 Public Const SWP_NOACTIVATE = &H10 Public Const SWP_NOCOPYBITS = &H100 Public Const SWP_NOMOVE = &H2 Public Const SWP_NOOWNERZORDER = &H200 Public Const SWP_NOREDRAW = &H8 Public Const SWP_NOREPOSITION = SWP_NOOWNERZORDER Public Const SWP_NOSIZE = &H1 Public Const SWP_NOZORDER = &H4 Public Const SWP_SHOWWINDOW = &H40 Sub FormOnTop(frm As Form, VF As Boolean) ' Questa procedura permette di impostare sempre in primo piano un form rispetto alle altre finestre ' frm ---> form su cui agisce la procedura ' vf ---> se true il form è visualizzato in primo piano Select Case VF Case True SetWindowPos frm.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOSIZE Or SWP_NOMOVE Case False SetWindowPos frm.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOSIZE Or SWP_NOMOVE End Select End Sub
Scusami forse era meglio se te lo convertivo gia' in VB.NET
Fai un modulo e metti
Poi nella form concodice:Module Module1 Declare Function SetWindowPos Lib "user32" (ByVal hwnd As IntPtr, ByVal hWndInsertAfter As Integer, ByVal x As Integer, ByVal y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As IntPtr Public Const SWP_FRAMECHANGED = &H20 Public Const HWND_TOP = 0 Public Const HWND_TOPMOST = -1 Public Const HWND_NOTOPMOST = -2 Public Const SWP_DRAWFRAME = SWP_FRAMECHANGED Public Const SWP_HIDEWINDOW = &H80 Public Const SWP_NOACTIVATE = &H10 Public Const SWP_NOCOPYBITS = &H100 Public Const SWP_NOMOVE = &H2 Public Const SWP_NOOWNERZORDER = &H200 Public Const SWP_NOREDRAW = &H8 Public Const SWP_NOREPOSITION = SWP_NOOWNERZORDER Public Const SWP_NOSIZE = &H1 Public Const SWP_NOZORDER = &H4 Public Const SWP_SHOWWINDOW = &H40 Public Sub FormOnTop(ByVal frm As Form, ByVal VF As Boolean) ' Questa procedura permette di impostare sempre in primo piano un form rispetto alle altre finestre ' frm ---> form su cui agisce la procedura ' vf ---> se true il form è visualizzato in primo piano Select Case VF Case True SetWindowPos(frm.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOSIZE Or SWP_NOMOVE) Case False SetWindowPos(frm.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOSIZE Or SWP_NOMOVE) End Select End Sub End Module
codice:FormOnTop(Me, True) 'la metti in primo piano FormOnTop(Me, True) 'la rimetti normale
ok grassie va,
ma solo se tolgo le dichiarazioni del modulo, forse è inutile in .net il suo uso
![]()
Se non sbaglio, ogni Form di Windows Forms ha la proprietà TopMost che, impostata a True, mantiene il form in primo piano.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
E' vero alka non l'avevo notato...
A volte la soluzione sembra + semplice di quello che sembra
Non ho fatto esperimenti poichè non faccio uso di VB.NET e ho poco tempo a disposizione, ma occorrerebbe verificare se l'impostazione TopMost è valida generalmente per tutte le applicazioni attive.Originariamente inviato da TrigunXX
A volte la soluzione sembra + semplice di quello che sembra
Mi spiego: si dovrebbe testare se la form TopMost rimane in primo piano rispetto alle altre form di un'applicazione VB.NET e di tutte le altre applicazioni attive (a meno che queste non facciano uso anch'esse della medesima impostazione oppure si ancorino al desktop e così via).
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Io penso che le applicazioni che utilizzano la top most non facciano altro che richiamare quell'API che ho scritto sopra e penso che l'ultima applicazione o finestra che la invoca dovra' restare sopra alle altre. Naturalmente è tutto da verificare!!!!