// 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()); } }
/// <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(); } } }