/// <summary> /// 外部プロセスで動作している Win32 ウィンドウのハンドルを指定して、<see cref="ExternalWindow"/> /// クラスの新しいインスタンスを初期化します。 /// </summary> /// <param name="hWnd">ウィンドウ ハンドル。</param> public ExternalWindow(IntPtr hWnd) { this.Handle = hWnd; if (_serviceInstance == null) { _serviceInstance = ServiceFactory.CreateInstance(); } this._external = _serviceInstance.Register(hWnd); this._external.StateChanged += this.ExternalOnStateChanged; this._external.SizeChanged += this.ExternalOnSizeChanged; this._external.WindowMoved += this.ExternalOnWindowMoved; this._external.Activated += this.ExternalOnActivated; this._external.Deactivated += this.ExternalOnDeactivated; this._external.Closed += this.ExternalOnClosed; this._rect = this.GetExtendFrameBounds(); this.IsActive = User32.GetForegroundWindow() == this.Handle; this.WindowState = WindowState.Normal; if (User32.IsIconic(hWnd)) { this.WindowState = WindowState.Minimized; } if (User32.IsZoomed(hWnd)) { this.WindowState = WindowState.Maximized; } }
/// <summary> /// 外部プロセスで動作している Win32 ウィンドウのハンドルを指定して、<see cref="ExternalWindow"/> /// クラスの新しいインスタンスを初期化します。 /// </summary> /// <param name="hWnd">ウィンドウ ハンドル。</param> public ExternalWindow(IntPtr hWnd) { this.Handle = hWnd; if (_serviceInstance == null) { _serviceInstance = ServiceFactory.CreateInstance(); } this._external = _serviceInstance.Register(hWnd); this._external.StateChanged += this.ExternalOnStateChanged; this._external.SizeChanged += this.ExternalOnSizeChanged; this._external.WindowMoved += this.ExternalOnWindowMoved; this._external.Activated += this.ExternalOnActivated; this._external.Deactivated += this.ExternalOnDeactivated; this._external.Closed += this.ExternalOnClosed; this._rect = this.GetExtendFrameBounds(); this.IsActive = User32.GetForegroundWindow() == this.Handle; this.WindowState = WindowState.Normal; if (User32.IsIconic(hWnd)) this.WindowState = WindowState.Minimized; if (User32.IsZoomed(hWnd)) this.WindowState = WindowState.Maximized; }