Так как разрешения AppDiagnostics были добавлены, я думаю, что будет возможно получить размер окна, в настоящее время на переднем плане.Вот что я уже пробовал:
async private void DoThing()
{
Rect angle = GetRectValues();
reportString += angle.Y + " ";
reportString += angle.X + " ";
reportString += angle.Height + " ";
reportString += angle.Width;
}
private unsafe Rect GetRectValues()
{
IntPtr hWID = GetForegroundWindow();
Rect angle;
Rect* pAngle = ∠
GetWindowRect(GetForegroundWindow(), pAngle);
return angle;
}
[DllImport("user32.dll", CharSet = CharSet.Ansi)]
private static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll", CharSet = CharSet.Ansi)]
private unsafe static extern Boolean GetWindowRect(IntPtr intPtr, Rect* lpRect);
Он работает, а также возвращает значения.Проблема в том, что эти значения довольно странные.
3.47522019152555E-43 1.50919844607783E-42 1.60448674165192E-42 3.50885135466934E-42
Это значения для окна проводника, работающего в середине моего экрана.Они меняются, когда я перемещаю окно, но я не знаю, как их интерпретировать.Кроме того, они изменяются на NaN, если окно полноэкранное.Если я не приведу их к целым числам, в этом случае значения по любой причине превращаются в -2147483648 -2147483648 0 0
.
Как правильно использовать этот метод и как интерпретировать эти значения?