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