Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1164to1168
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Userform in Taskleiste ausblenden (SetWindowLong)

Userform in Taskleiste ausblenden (SetWindowLong)
Robert
Hallo zusammen,
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
AW: Userform in Taskleiste ausblenden (SetWindowLong)
28.06.2010 11:59:50
Robert
Hallo Tino,
Danke für die schnelle Antwort.
Leider funktioniert Dein Beispiel bei mir überhaupt nicht. D.h. die Userform wird nicht in der (Windows-)Taskleiste angezeigt. Außerdem führst Du in Deinem Beispiel "unload me" aus, wenn Du die zweite Userform öffnest. Genau das möchte ich nicht machen, da die erste Userform im Hintergrund offen bleiben soll (in diesem Fall würde mein Problem auch gar nicht auftreten.)
Hier mein bisheriger Stand: https://www.herber.de/bbs/user/70305.xlsm bzw. hier: https://www.herber.de/bbs/user/70306.zip
Nochmal das Problem: "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."
VG Robert
Anzeige
AW: Userform in Taskleiste ausblenden (SetWindowLong)
28.06.2010 13:13:52
Robert
Hallo Tino,
Me.Hide nützt mir leider auch nichts, da das Hauptformular ja wie geschrieben im Hintergrund sichtbar bleiben soll. Insgesamt funktioniert Deine Lösung schon zuverlässiger als mein erster Stand, alle Variationen von Klicks auf andere Einträge in der Taskleiste und auf "Show Desktop" fängt sie aber auch nicht ab.
Vielleich kann man in der Funktion "DelTasklist" differenzierter auf den Anzeigestatus des Formulars eingehen, der sich ja offenbar durch die Hin-und-Her-"Klickerei" in der Taskleiste ändert.
VG Robert
Anzeige
keine Idee mehr und ... (Frage offen)
28.06.2010 13:52:57
Tino
Hallo,
irgendwie verstehe ich auch nicht was Du meinst.
Bei mir wird in der Task nur die aktive UF angezeigt,
egal wie oft ich hin und her klicke oder sonstige Aktionen mache.
Habe es mal unter Win XP und unter Win 7 versucht, ich bekomme keine zwei angezeigt.
Ich lass mal offen, vielleicht hat ein anderer noch eine Idee.
Gruß Tino
AW: keine Idee mehr und ... (Frage offen)
28.06.2010 14:54:25
Robert
Hallo Tino,
trotzdem noch mal Danke für Deine Hilfe.
Bei mir funktioniert Deine Variante z.B. so nicht:
  • Hauptformular anzeigen

  • Auf einen beliebigen anderen Eintrag in der Taskleiste klicken

  • Show Desktop

  • Eintrag des Formulars in der Taskleiste anklicken

  • Im Formular auf "Hilfe" klicken

  • Im Formular auf "Zurück" klicken

  • Ergebnis: Kein Eintrag mehr in der Taskleiste

  • Aber der wesentliche Grund, warum Deine Lösung nicht ganz für mein Problem passt, ist ja, dass das Hauptformular im Hintergrund sichtbar bleiben soll.
    VG Robert
    Anzeige
    machts bei mir nicht so?!
    28.06.2010 15:27:28
    Tino
    Hallo,
    bin es mal wie beschrieben durchgegangen, läuft wie es soll.
    Gruß Tino

    300 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige