Einzelnen Beitrag anzeigen

Benutzerbild von EWeiss
EWeiss

Registriert seit: 16. Okt 2010
6.276 Beiträge
 
Delphi 2010 Architect
 
#19

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