Problem mit API

meilon

Erfahrenes Mitglied
Hi,
da ich für eine modifizierbare Trayfunktion den Eintrag in der Taskbar ein und ausschalten will, habe ich mir eine API besorgt, weil man ja leider me.showintaskbar währen der Laufzeit ja nicht ändern kann.
Hier erstmal die API
Code:
Option Explicit

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex 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 Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

Private Const SW_HIDE = 0
Private Const SW_SHOW = 5
Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_TOOLWINDOW = &H80&

Public Sub FormShowInTaskbar(hWnd As Long, Visible As Boolean)
  Dim lResult As Long
  lResult = ShowWindow(hWnd, SW_HIDE)
  DoEvents
  lResult = SetWindowLong(hWnd, GWL_EXSTYLE, IIf(Visible, -WS_EX_TOOLWINDOW, WS_EX_TOOLWINDOW))
  DoEvents
  lResult = ShowWindow(hWnd, SW_SHOW)
End Sub
Das Ein- und Ausschalten funktioniert Prima, nur leider wird beim wieder in die Taskbar schicken die Form und all ihre Elemente "gespiegelt".

Da ich mich mit API's net sonderlich gut auskenne, überlasse ich das mal den Profis hier :p

mfg

PS: Beim ScreenShot machen (mit HyperSnap) habe ich bemerkt, dass er für das Control erst wo anders hinwolte, nämlich rechts der sichtbaren Form, hoffe es hilft!
 

Anhänge

  • 051.jpg
    051.jpg
    17,6 KB · Aufrufe: 28
Probier sonst mal diesen Tipp hier aus, der funktioniert bei mir wunderbar. (Es werden noch zusätzlich 2 andere API-Funktionen verwendet)
 
Zurück