49 lines
1.2 KiB
C#
49 lines
1.2 KiB
C#
|
using System.Drawing;
|
||
|
|
||
|
namespace Hardcodet.Wpf.TaskbarNotification.Interop
|
||
|
{
|
||
|
public static class TrayInfo
|
||
|
{
|
||
|
public static Point GetTrayLocation()
|
||
|
{
|
||
|
int num = 2;
|
||
|
AppBarInfo appBarInfo = new AppBarInfo();
|
||
|
appBarInfo.GetSystemTaskBarPosition();
|
||
|
Rectangle workArea = appBarInfo.WorkArea;
|
||
|
int x = 0;
|
||
|
int y = 0;
|
||
|
switch (appBarInfo.Edge)
|
||
|
{
|
||
|
case AppBarInfo.ScreenEdge.Left:
|
||
|
x = workArea.Right + num;
|
||
|
y = workArea.Bottom;
|
||
|
break;
|
||
|
case AppBarInfo.ScreenEdge.Bottom:
|
||
|
x = workArea.Right;
|
||
|
y = workArea.Bottom - workArea.Height - num;
|
||
|
break;
|
||
|
case AppBarInfo.ScreenEdge.Top:
|
||
|
x = workArea.Right;
|
||
|
y = workArea.Top + workArea.Height + num;
|
||
|
break;
|
||
|
case AppBarInfo.ScreenEdge.Right:
|
||
|
x = workArea.Right - workArea.Width - num;
|
||
|
y = workArea.Bottom;
|
||
|
break;
|
||
|
}
|
||
|
Point point = default(Point);
|
||
|
point.X = x;
|
||
|
point.Y = y;
|
||
|
return GetDeviceCoordinates(point);
|
||
|
}
|
||
|
|
||
|
public static Point GetDeviceCoordinates(Point point)
|
||
|
{
|
||
|
Point result = default(Point);
|
||
|
result.X = (int)((double)point.X / SystemInfo.DpiFactorX);
|
||
|
result.Y = (int)((double)point.Y / SystemInfo.DpiFactorY);
|
||
|
return result;
|
||
|
}
|
||
|
}
|
||
|
}
|