Gå til innhold

Endre oppførsel på Lukk-knappen?


Anbefalte innlegg

Jeg har laget et program, og fulgt en guide på MSDN for å få det til å dukke opp i system tray. Men, jeg ønsker at programmet skal fungere slik at dersom man trykker på Lukk-knappen på hovedskjemaet så skal skjemaet forsvinne fra taskbar (ShowInTaskbar = false) samt bli usynlig (Visible = False). Men selve prorammet skal fremdeles kjøre, og ikonet skal ligge i system tray.

 

Men hvordan kan jeg legge på disse to kommandoen til den knappen?

Lenke til kommentar
Videoannonse
Annonse

Ettersom ShowInTaskbar kun kan endres i designtiden, må dette gjøres via API. Vi vil også nytte godt av Cancel-egenskapen på hendelsen Unload:

 

Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Const SW_HIDE = 0
Private Const SW_SHOW = 5
Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_APPWINDOW As Long = &H40000
Private Const WS_EX_TOOLWINDOW = &H80&

Private Sub Form_Unload(Cancel As Integer)

   ' Kanseler lukkingen av formen, slik at ikke applikasjonen avsluttes uten vår kjennskap
   Cancel = True

   ' Fjern formen fra oppgavelinjen
   SetShowInTaskbar False, Me.hwnd
   
   ' Usynliggjør formen
   Me.Visible = False

End Sub

Public Sub ShowForm()

   ' Vis formen i oppgavelinjen
   SetShowInTaskbar True, Me.hwnd
   
   ' Samt gjør den synlig
   Me.Visible = True

End Sub

Public Sub SetShowInTaskbar(Visible As Boolean, hwnd As Long)

   ShowWindow hwnd, SW_HIDE: DoEvents
   SetWindowLong hwnd, GWL_EXSTYLE, IIf(Visible, WS_EX_APPWINDOW, WS_EX_TOOLWINDOW): DoEvents
   ShowWindow hwnd, SW_SHOW

End Sub

 

Når du ønsker å vise formen igjen, kaller du ganske enkelt prosedyren ShowForm.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...