Laden...

Bei zweiter Taskleiste soll FullScreen den Bereich der zweiten Taskleiste auslassen

Erstellt von Mattes80 vor 3 Jahren Letzter Beitrag vor 3 Jahren 669 Views
M
Mattes80 Themenstarter:in
23 Beiträge seit 2020
vor 3 Jahren
Bei zweiter Taskleiste soll FullScreen den Bereich der zweiten Taskleiste auslassen

Hallo

Ich versuche gerade eine 2. Taskleiste für Windows zu erstellen.

Das Grundprinzip funktioniert ja schon. Nur gibt es einen Wichtigen Problem.

Das Problem ist: Das bei alle Windows Programme wenn man auf Maximieren geht auf das ganze Bildschirm geht.

Es müsste so sein das wenn die 2. Taskleiste oben ist und eine Höhe von 80px hat. Das wenn man z.b. das WordPAD auf Maximieren geht. Es dann von Oben nicht bei 0px Anfängt sondern erst bei die 80px.

Genauso wenn die 2. Taskleiste Rechts ist dann ist die Breite auf 80px.

Hoffe mir kann jemand dabei Helfen.

<Window x:Class="Taskleiste.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Taskleiste"
        mc:Ignorable="d"
        Title="MainWindow" Topmost="True" MouseLeave="Window_MouseLeave" MouseEnter="Window_MouseEnter" Width="{DynamicResource {x:Static SystemParameters.MaximumWindowTrackWidthKey}}" Height="80" WindowStyle="None" Top="0" HorizontalAlignment="Left" VerticalAlignment="Top" ResizeMode="NoResize" ShowInTaskbar="False" Left="0" Background="White">
    <Grid>
        
    </Grid>
</Window>

Gruß

Mattes

4.931 Beiträge seit 2008
vor 3 Jahren

So wie ich deinen Code verstehe, hast du einfach nur ein "topmost window" erstellt.
Eine eigene (zusätzliche) TaskBar wird als "AppBar" bezeichnet: Using Application Desktop Toolbars (AppBar) sowie AppBar using C#.

M
Mattes80 Themenstarter:in
23 Beiträge seit 2020
vor 3 Jahren

Danke für deine Antwort.

Was für ein Projekt wählt man da dann aus? weil das AppBar finde ich bei Visual Studio nicht. Ich hatte bis jetzt immer das WPF-APP (.net Framework) dann gibt es nich WPF-APP (.net) oder muss man da diese Komponententest-App (Universelle Windows-App) benutzen?

Gruß

Mattes

4.931 Beiträge seit 2008
vor 3 Jahren

Du mußt einfach den Code aus dem 2. Link übernehmen und entweder in dein WPF-Projekt oder, wie in dem Beispiel, in ein Windows Forms-Projekt, einbinden (das wichtige daran ist der Aufruf der SHAppBarMessage-Funktion per P/Invoke).

M
Mattes80 Themenstarter:in
23 Beiträge seit 2020
vor 3 Jahren

Ich bekomme es Leider nicht hin.

Hab es auch schon in Form1 versucht.

Ich konnte auch kein Download finden wo man sich das im VS anschauen kann.

Mein Ziel ist es ja nur das wenn man eine Windows Anwendung auf Maximieren tut, das diese dann nicht unter meiner 2. Taskleiste ist.

es müsste doch einfacher gehen oder?
am besten in einer IF anfrage, weil in die Einstellungen kann man ja einstellen ob die 2. Taskleiste einklappbar ist oder nicht.



if this.Height="1" {

// hier der code für die Maximale Windows höhe

} elseif this.Height="80" {

// hier der code für die Maximale Windows höhe

}


4.931 Beiträge seit 2008
vor 3 Jahren

Du scheinst das Problem nicht zu verstehen. Das Windows-System muß dies verwalten, da sonst die anderen Fenster ja nichts über deine "TaskBar" wissen (kannst auch mal nach dem Begriff "Desktop working area" suchen).

Du brauchst doch zum Test nur ein neues WinForms-Projekt erstellen und den gesamten Code (unter "full listing") zu kopieren ("Form1" dafür vorher zu "MainForm" umbenennen oder andersherum).

M
Mattes80 Themenstarter:in
23 Beiträge seit 2020
vor 3 Jahren

du meinst den Code im Designer Reinkopieren?

M
Mattes80 Themenstarter:in
23 Beiträge seit 2020
vor 3 Jahren

Hab es nun verstanden.

Nur funktioniert diese nicht. Ich probiere es noch weiter ob ich es hinbekomme.

Wenn nicht dann sende ich diese Fehlermeldungen.

Ich möchte das nicht in Form1 sondern als schon als WPF, will lieber komplett in WPF bleiben.