AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Dynamische Position der unteren Taskbar
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamische Position der unteren Taskbar

Ein Thema von TheGroudonx · begonnen am 31. Mai 2014 · letzter Beitrag vom 22. Jun 2014
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

AW: Dynamische Position der unteren Taskbar

  Alt 11. Jun 2014, 10:59
Mir bringt das eine Menge.
Also weiß keiner, ob der aktuelle, dynamische Top-Wert oder die Höhe der minimierten Taskleiste irgendwo auszulesen ist?
Hast du eigentlich gelesen was ich geschrieben habe? Programme ändern ihre Größen wenn sich die WorkArea ändert. Die Taskleiste verändert nur die WorkArea. Vielleicht solltest du deine Frage in eine andere Richtung konzentrieren.
  Mit Zitat antworten Zitat
TheGroudonx

Registriert seit: 21. Mai 2014
44 Beiträge
 
#2

AW: Dynamische Position der unteren Taskbar

  Alt 14. Jun 2014, 13:21
@Aphton

Die Exe die du angehängt hast scheint genau das zu machen was ich versuche, wenn auch mit etwas niedriger Frequenz, was sich bestimmt ändern lässt. Könntest du dazu evtl. den Code nennen, da es mir sonst nich allzuviel bringt.
  Mit Zitat antworten Zitat
TheGroudonx

Registriert seit: 21. Mai 2014
44 Beiträge
 
#3

AW: Dynamische Position der unteren Taskbar

  Alt 21. Jun 2014, 12:58
Aphton...?

Naja, der Quellcode seines Programms macht das was ich brauche.
Jemand eine Ahnung was der Quellcode davon sein könnte?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Dynamische Position der unteren Taskbar

  Alt 21. Jun 2014, 13:41
Aphton...?

Naja, der Quellcode seines Programms macht das was ich brauche.
Jemand eine Ahnung was der Quellcode davon sein könnte?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  hTaskbar: HWND;
  T: TRect;
  ScrW, ScrH: integer;
begin
  ScrW := Screen.Width;
  ScrH := Screen.Height;
  hTaskBar := FindWindow('Shell_TrayWnd', nil);
  GetWindowRect(hTaskBar, T);
  if (T.Top > ScrH DIV 2) and (T.Right >= ScrW)
  then ShowMessage('Bottom of the screen')
  else if (T.Top < ScrH DIV 2) and (T.Bottom <= ScrW DIV 2)
       then ShowMessage('Top of the screen')
       else if (T.left < ScrW DIV 2) and (T.Top <= 0)
            then ShowMessage('Left side of the screen')
            else ShowMessage('Right side of the screen');
end;
Verwende anstelle von Button1Click das und kombiniere das Window Handle das zurückgegeben wird das unter der Maus liegt
In dem Fall wäre das hTaskBar.

Also ist
WindowFromPoint(pt) := hTaskBar
dann tue das was in dieser Procedure(Button1Click) steht.
Wenn du nun die Taskbar verschiebst oder neu positionierst bekommst du in Realzeit
die Koordinaten wo sich diese gerade befindet. (Aber! Message boxen sind dafür nicht gerade geeignet)

Delphi-Quellcode:
procedure ScreenToClient2(wnd: HWND; var pt: TPoint);
var
   r: TRect;
begin
   if GetWindowRect(wnd, r) then
   begin
     pt.X := pt.X - r.Left;
     pt.Y := pt.Y - r.Top;
   end;
end;

procedure ClientToScreen2(wnd: HWND; var pt: TPoint);
var
   r: TRect;
begin
   if GetWindowRect(wnd, r) then
   begin
     pt.X := pt.X + r.Left;
     pt.Y := pt.Y + r.Top;
   end;
end;

function WindowFromRelativePoint(wnd: HWND; pt: TPoint): HWND;
begin
   ClientToScreen2(wnd,pt);
   result := WindowFromPoint(pt);
end;
Ich kann das zwar alles komplett für dich fertig machen.
Aber wo bleibt dann der lern Effekt?

Ansonsten wurde alles schon gesagt.

gruss

Geändert von EWeiss (21. Jun 2014 um 14:00 Uhr)
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#5

AW: Dynamische Position der unteren Taskbar

  Alt 21. Jun 2014, 14:14
Delphi-Quellcode:
function TaskbarHandle: THandle;
begin
  Result := FindWindow('Shell_TrayWnd', nil);
end;

function TrayHandle: THandle;
begin
  Result := FindWindowEx(TaskbarHandle, 0, 'TrayNotifyWnd', nil);
end;

procedure TForm2.Button1Click(Sender: TObject);
var TR : TRECT;
begin
GetWindowRect(TrayHandle, TR);
Memo1.Lines.Add(' LEFT: '+INTTOSTR(TR.Left));
Memo1.Lines.Add(' RIGHT: '+INTTOSTR(TR.Right));
Memo1.Lines.Add(' TOP: '+INTTOSTR(TR.Top));
Memo1.Lines.Add(' BOTTOM: '+INTTOSTR(TR.Bottom));
Memo1.Lines.Add(' HEIGHT: '+INTTOSTR(TR.Height));
Memo1.Lines.Add(' WIDTH: '+INTTOSTR(TR.Width));
end;

procedure TForm2.Button2Click(Sender: TObject);
var TR : TRECT;
begin
GetWindowRect(TaskBarHandle, TR);
Memo1.Lines.Add(' LEFT: '+INTTOSTR(TR.Left));
Memo1.Lines.Add(' RIGHT: '+INTTOSTR(TR.Right));
Memo1.Lines.Add(' TOP: '+INTTOSTR(TR.Top));
Memo1.Lines.Add(' BOTTOM: '+INTTOSTR(TR.Bottom));
Memo1.Lines.Add(' HEIGHT: '+INTTOSTR(TR.Height));
Memo1.Lines.Add(' WIDTH: '+INTTOSTR(TR.Width));
end;

Geändert von hathor (21. Jun 2014 um 14:18 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Dynamische Position der unteren Taskbar

  Alt 21. Jun 2014, 14:17
Delphi-Quellcode:
function TaskbarHandle: THandle;
begin
  Result := FindWindow('Shell_TrayWnd', nil);
end;

function TrayHandle: THandle;
begin
  Result := FindWindowEx(TaskbarHandle, 0, 'TrayNotifyWnd', nil);
end;

procedure TForm2.Button1Click(Sender: TObject);
var TR : TRECT;
begin
GetWindowRect(TrayHandle, TR);
Memo1.Lines.Add(' LEFT: '+INTTOSTR(TR.Left));
Memo1.Lines.Add(' RIGHT: '+INTTOSTR(TR.Right));
Memo1.Lines.Add(' TOP: '+INTTOSTR(TR.Top));
Memo1.Lines.Add(' BOTTOM: '+INTTOSTR(TR.Bottom));
Memo1.Lines.Add(' HEIGHT: '+INTTOSTR(TR.Height));
Memo1.Lines.Add(' WIDTH: '+INTTOSTR(TR.Width));
end;
Er will die Positionen wenn er die Tasbar verschiebt.
Dann mach ihm das auch noch fertig.
Das ist ja nur die hälfte. LOL

gruss

Geändert von EWeiss (21. Jun 2014 um 14:19 Uhr)
  Mit Zitat antworten Zitat
TheGroudonx

Registriert seit: 21. Mai 2014
44 Beiträge
 
#7

AW: Dynamische Position der unteren Taskbar

  Alt 22. Jun 2014, 18:50
Dank euch funktioniert mein Programm jetzt noch besser

Vielen Dank
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 15:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz