ich arbeite mit Userforms und habe Excel als Application ausgeblendet. Damit die Userform in der Taskleiste angezeigt wird, verwende ich die Funktion "AppTasklist", die ich aus einem Forum habe. Das funktioniert ohne Probleme.
Nun habe ich aber eine zweite Userform (Hilfetexte), die aus dem Hauptformular angezeigt werden soll, ohne dass dieses geschlossen wird. Die zweite Userform ruft ebenfalls "AppTasklist" auf.
Mein Ziel ist nun, den Eintrag des Hauptformulars in der Taskleiste zu entfernen, wenn die zweite Userform aufgerufen wird.
1. Aufruf der 2. Userform aus der ersten:
Private Sub cmdHilfe_Click()
Call DelTasklist(Me)
frmHilfe.Show
Call AppTasklist(Me)
End Sub
2. Die Funktion "DelTasklist"
Public Sub DelTasklist(myForm)
Dim WStyle As Long
Dim Result As Long
Dim hWnd As Long
hWnd = FindWindow(vbNullString, myForm.Caption)
WStyle = GetWindowLong(hWnd, GWL_EXSTYLE)
WStyle = WStyle And Not (WS_EX_APPWINDOW)
Result = SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE Or _
_
SWP_HIDEWINDOW)
Result = SetWindowLong(hWnd, GWL_EXSTYLE, WStyle)
Result = SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE Or _
_
SWP_SHOWWINDOW)
End Sub
Der einzige Unterschied zu AppTasklist ist, dass statt
WStyle = WStyle Or (WS_EX_APPWINDOW)
WStyle = WStyle And Not (WS_EX_APPWINDOW)
ausgeführt und damit die Fenstereigenschaft "Anzeigen in der Taskleiste" entfernt, statt hinzugefügt wird.
Die Funktion funktioniert leider nur, wenn ich nur zwischen den beiden Formularen wechsel. Sobald ich zwischendurch auf einen anderen Eintrag in der Taskleiste klicke und anschließend wieder auf das Formular springe, werden in der Folge immer beide Formulare in der Taskleiste angezeigt. Mir ist schon aufgefallen, dass in diesem Fall die Variable "WStyle" den Wert 265 statt 257 hat, aber auch ein hartes Setzen dieses Wertes brachte keine Lösung.
Wenn jemand von Euch eine Idee hat, würde mich das sehr freuen. Ich habe diese Frage auch schon in einem anderen Forum gestellt, aber leider keine Antwort bekommen.
Vielen Dank und VG
Robert