// Update is called once per frame
        void Update()
        {
            // 自ウィンドウ取得状態が不確かなら探しなおす
            //  マウス押下が取れるのはすなわちフォーカスがあるとき
            if (Input.GetMouseButtonDown(0))
            {
                UpdateWindow();
            }

            // キー、マウス操作の下ウィンドウへの透過状態を更新
            UpdateClickThrough();

            // マウスドラッグでウィンドウ移動
            DragMove();

            // ウィンドウ枠が復活している場合があるので監視するため、呼ぶ
            uniWin.Update();

            // デバッグ
            if (Input.GetKey(KeyCode.Space))
            {
                var list = UniWinApi.FindWindows();
                foreach (var window in list)
                {
                    Debug.Log(window);
                }
                Debug.Log("CheckActiveWindow: " + uniWin.CheckActiveWindow());
            }
        }
Пример #2
0
        /// <summary>
        /// 自分のウィンドウハンドルが不確かならば探しなおす
        /// </summary>
        private void UpdateWindow()
        {
            if (uniWin == null)
            {
                return;
            }

            // もしウィンドウハンドル取得に失敗していたら再取得
            if (!uniWin.IsActive)
            {
                //Debug.Log("Window is not active");
                FindMyWindow();
            }
            else if (!isWindowChecked)
            {
                // 自分自身のウィンドウか未確認の場合

                // 今アクティブなウィンドウが自分自身かをチェック
                if (uniWin.CheckActiveWindow())
                {
                    isWindowChecked = true; // どうやら正しくウィンドウをつかめているよう
                }
                else
                {
                    // ウィンドウが違っているようなので、もう一度アクティブウィンドウを取得
                    uniWin.Reset();
                    uniWin.Dispose();
                    uniWin = new UniWinApi();
                    FindMyWindow();
                }
            }
        }