Porre la finestra di un programma esterno in primo piano

Da Gambas-it.org - Wikipedia.

Per porre in primo piano la finestra di un programma esterno, ossia diverso dal nostro programma Gambas principale, è possibile adottare almeno due soluzioni.

Uso della proprietà .ActiveWindow della Classe Desktop

Di seguito un esempio di codice che utilizza la proprietà .ActiveWindow della Classe Desktop, supponendo che si conosca il numero identificativo della finestra del programma da porre in primo piano.
E' necessario attivare il Componente "gb.desktop".

Public Sub Button1_Click()

  Desktop.ActiveWindow = numero_identificativo_della_finestra

End

Uso del metodo .Activate() della Classe DesktopWindow

Di seguito un esempio di codice che utilizza il metodo .Activate() della Classe DesktopWindow, supponendo anche in questo caso che si conosca il numero identificativo della finestra del programma da porre in primo piano.
In quest'altro caso è necessario attivare il Componente "gb.desktop.x11".

Private dw As DesktopWindow


Public Sub Button1_Click()

  With dw = New DesktopWindow(numero_identificativo_della_finestra)
    .Activate()
  End With

End

Mantenere la finestra del proprio programma sempre attiva e sopra tutte le altre finestre

Per mantenere la finestra del proprio programma sempre attiva e sopra tutte le finestre di altri eventuali programmi aperti, si può assegnare alla Proprietà ".Stacking" dell'Oggetto "Form" del programma il valore costante 1 ("Window.Above").
Anche usando tale Proprietà, però la finestra del proprio programma perde il focus, se viene aperta la finestra di un altro qualsiasi programma. Pertanto si dovrà provvedere a far riassegnare il focus al "Form" del programma, rilevando la perdita del focus con lo specifico Evento "_LostFocus()".

Mostriamo un esempio:

Public Sub Form_Activate()
 
' Impone la posizione del proprio "Form" al di sopra di tutte le altre finestre:
 Me.Stacking = Window.Above
 
End

Public Sub Form_LostFocus()   ' Se la finestra del programma perde il focus, viene sollevato questo Evento

' Riattiva il proprio "Form" garantendogli anche il focus:
 Desktop.ActiveWindow = Me.Id
 
End