Ejemplo n.º 1
0
        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} が見つかりません。");
            }
        }