AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Form in Taskleiste zwischen ReBarWindow32 & TrayNotifyWnd ?

Form in Taskleiste zwischen ReBarWindow32 & TrayNotifyWnd ?

Offene Frage von "frost"
Ein Thema von frost · begonnen am 28. Mai 2007 · letzter Beitrag vom 4. Jun 2007
Antwort Antwort
frost

Registriert seit: 28. Mai 2007
Ort: Kassel
2 Beiträge
 
#1

Form in Taskleiste zwischen ReBarWindow32 & TrayNotifyWn

  Alt 28. Mai 2007, 20:13
Hi,
ich möchte eine Form / Panel / Bild in die Taskleiste einbauen,
jedoch ohne DeskBands da diese meinen Wünschen nicht entsprechen.

Edit: Hab ein OpenSource Projekt gefunden dass das macht, jedoch in C++ gecodet.
Edit2 Was ich dem Source entnehmen kann ist dass ich irgendwie mit RECT arbeiten muss..

Die Handles der Taskleiste sind ja folgendermaßen aufgebaut:

Code:
// Shell_TrayWnd
//    |- Button
//    |- ReBarWindow32
//    |    |- MSTaskSwWClass
//    |    |    +- ToolbarWindow32
//    |    +- ToolbarWindow32
//    |- ]]]] Hier soll mein Control rein [[[[
//    +- TrayNotifyWnd
//         |- TrayClockWClass
//         |- SysPager
//         |    +- ToolbarWindow32
//         +- Button


Grob gesagt möchte ich etwas zwischen ReBarWindow32 und TrayNotifyWnd quetschen.
Wie das aussieht kann man sich bei NHC (Notebook Hardware Control) ansehen:
http://www.imagebanana.com/img/s7lujk3/nhc.PNG

Das habe ich bisher versucht:
Delphi-Quellcode:
var Shell_TrayWnd_HWND: HWND;
begin

  // Das Handle von der Taskleiste rauskriegen
  Shell_TrayWnd_HWND := FindWindow('Shell_TrayWnd', nil);

  // Taskleiste als Parent fürs Panel setzen
  Windows.SetParent(Panel1.Handle,Shell_TrayWnd_HWND);

end;
Das klappt auch, jedoch landet das Panel dann irgendwo unterm Startbutton.
Natürlich könnte man mit Windows.MoveWindow das Panel zur gewünschten Stelle veschieben,
jedoch ist das keine Lösung.

Wie kann ich dem Panel begfreiflich machen dass von der Position her ReBarWindow32 und TrayNotifyWnd seine "Geschwister" sind?

Vielen dank für jede Hilfe!
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Form in Taskleiste zwischen ReBarWindow32 & TrayNoti

  Alt 28. Mai 2007, 20:26
...geht das nicht per Hier im Forum suchenDeskband?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
frost

Registriert seit: 28. Mai 2007
Ort: Kassel
2 Beiträge
 
#3

Re: Form in Taskleiste zwischen ReBarWindow32 & TrayNoti

  Alt 28. Mai 2007, 20:51
Zitat von DGL-luke:
...geht das nicht per Hier im Forum suchenDeskband?
Danke dass du meinen Post so aufmerksam gelesen hast..

Deskbands mag ich nicht benutzen, da
- es auch ohne sie geht (siehe NHC)
- ich ihr "verhalten" nicht mag
- Deskbands zu umfangreich sind. (Möchte nur einen Simplen Button, zwecks Launcher Programm)
- verschiedene andere gründe.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Form in Taskleiste zwischen ReBarWindow32 & TrayNoti

  Alt 28. Mai 2007, 20:58
Ja, das ganze zeugs war mir zu viel zum Lesen
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Coly

Registriert seit: 22. Nov 2003
7 Beiträge
 
#5

Re: Form in Taskleiste zwischen ReBarWindow32 & TrayNoti

  Alt 4. Jun 2007, 22:24
Zitat:
Edit: Hab ein OpenSource Projekt gefunden dass das macht, jedoch in C++ gecodet.
Edit2 Was ich dem Source entnehmen kann ist dass ich irgendwie mit RECT arbeiten muss..
^^ Die machen nichts anders als du, sie verschieben das Panel an die stelle. Damit das dann so ausschaut wie es halt ausschaut bei
denen wird einfach die ReBar gekürzt und siehe da Platz zwischen Rebar und Tray

PS: Du hast nur ein Problem, Taskbar Bug, du must via Timer z.b. die ReBar Size überwachen und wieder kürzen fals sie ihre Orginal
Size wieder hat.

Code Technisch so in etwa :

Windows.MoveWindow(MyReBarHWnd, L,T,R,B, True);
Windows.RedrawWindow(MyReBarHWnd, nil,0,RDW_UPDATENOW or RDW_FRAME or RDW_INVALIDATE );

hoffe das hilft dir ein bissel..
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz