public void Tick() { if (!ScaleEnabled.Value) { Scale.Visible = false; return; } if (Control.MouseButtons.HasFlag(MouseButtons.Left)) { Status.OnNext($"監視を一時停止しています。"); return; } var procName = TargetAppUtils.ProcessName; var hwndN = TargetAppUtils.GetHwnd(); if (hwndN is HWND hwnd) { try { Scale.Visible = true; var targetRect = WindowUtils.GetClientRectOnScreen(hwnd); if (BeforeRect != targetRect) { var r = ScaleRectOnScreen(targetRect); Scale.SetBounds(r.X, r.Y, r.Width, r.Height); BeforeRect = targetRect; Status.OnNext($"目盛りを移動しました。"); } else { Status.OnNext($"アプリ {procName} を監視しています。"); } } catch (Exception) { Scale.Visible = false; Status.OnNext($"アプリ {procName} の監視が失敗しました。管理者権限が必要かもしれません。"); } } else { Scale.Visible = false; Status.OnNext($"アプリ {procName} が見つかりません。"); } }