/// <summary> /// ウィンドウ取得処理を行う。 /// </summary> /// <param name="windowProc">ウィンドウ操作を行うオブジェクト</param> private void FindWindow(IWindowProc windowProc) { // クラス名とウィンドウ名を取得する。 this.FindWindowResultClassName = windowProc.GetClassName(); this.FindWindowResultTextName = windowProc.GetWindowText(); // ウィンドウ操作を行うオブジェクトをプライベートフィールドに保持する。 this.WindowProc = windowProc; }
/// <summary> /// プロパティ情報をもとにハンドルを取得する。 /// </summary> public void FindWindow() { // 現在の取得しているウィンドウ操作オブジェクトを無効にする。 this.WindowProc = null; // ウィンドウ操作オブジェクトの取得処理を行う。 IWindowProc windowProc; if (this.Specifying == FindWindowSpecifying.Position) { System.Drawing.Point p = new System.Drawing.Point(this.FindWindowPointX, this.FindWindowPointY); windowProc = this.WindowProcFactory.FindWindow(p); } else if (this.Specifying == FindWindowSpecifying.WindowClass) { string className = null; string windowName = null; if (!string.IsNullOrEmpty(this.FindWindowClassName)) { className = this.FindWindowClassName; } if (!string.IsNullOrEmpty(this.FindWindowTextName)) { windowName = this.FindWindowTextName; } windowProc = this.WindowProcFactory.FindWindow(className, windowName); } else { throw new InvalidOperationException(); } FindWindow(windowProc); }
/// <summary> /// ウィンドウハンドルをもとにハンドルを取得する。 /// </summary> public void FindWindowFromHwnd(IntPtr hwnd) { // 現在の取得しているウィンドウ操作オブジェクトを無効にする。 this.WindowProc = null; // ウィンドウハンドルを取得する。 FindWindow(this.WindowProcFactory.GetControlWindow(hwnd)); }
/// <summary> /// タスクバーのハンドルを取得する。 /// </summary> public void FindTaskBarHandle() { // 現在の取得しているウィンドウ操作オブジェクトを無効にする。 this.WindowProc = null; // タスクバーのウィンドウハンドルを取得する。 FindWindow(this.WindowProcFactory.GetTaskBarWindow()); }