GetClassName() private method

private GetClassName ( int hWnd, StringBuilder lpClassName, int nMaxCount ) : int
hWnd int
lpClassName StringBuilder
nMaxCount int
return int
Exemplo n.º 1
0
        /// <summary>
        /// キャプチャのコア処理。
        /// </summary>
        /// <param name="target">キャプチャ対象</param>
        /// <returns>キャプチャ画像</returns>
        protected override Bitmap CaptureCore(IntPtr?target)
        {
            var handle = target.Value;

            // IE判定
            var className = InteropHelper.GetClassName(handle);

            if (className == ClassNameIe)
            {
                // ウェブページ全体をキャプチャ
                return(InternetExplorerCapture(handle));
            }
            else
            {
                // 選択コントロールをキャプチャ
                return(ScreenHelper.CaptureScreen(handle));
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 表示順にソートしたウィンドウハンドルを取得します。
        /// </summary>
        /// <returns>ウィンドウハンドルリスト</returns>
        private List <IntPtr> GetHandles()
        {
            List <IntPtr> list = new List <IntPtr>();

            // 一番手前のウィンドウを取得
            IntPtr handle = User32.GetForegroundWindow();
            IntPtr hWndPrev;

            while ((hWndPrev = User32.GetWindow(handle, GW.HWNDPREV)) != IntPtr.Zero)
            {
                handle = hWndPrev;
            }

            do
            {
                // 対象ウィンドウか判定
                if (this.IsValidWindow(handle))
                {
                    // 子ウィンドウ判定
                    IntPtr hWndChild = User32.GetWindow(handle, GW.CHILD);
                    if (hWndChild != IntPtr.Zero)
                    {
                        this.GetHandles(hWndChild, ref list);
                    }
                    list.Add(handle);
                }
            } while ((handle = User32.GetWindow(handle, GW.HWNDNEXT)) != IntPtr.Zero);

            // 除外対象のクラス名のハンドルを除外する
            list.RemoveAll(x =>
            {
                var className = InteropHelper.GetClassName(x);
                return(className.IndexOf(ProductInfo.Product) >= 0 || this.ignoreClassNames.Contains(className));
            });

            return(list);
        }
Exemplo n.º 3
0
 /// <summary>
 /// コントロール情報を設定します。
 /// </summary>
 /// <param name="handle">コントロールのハンドル</param>
 /// <param name="bounds">コントロールの範囲</param>
 public void UpdateInfo(IntPtr handle, Rectangle bounds)
 {
     this.ClassName       = InteropHelper.GetClassName(handle);
     this.ControlLocation = bounds.Location;
     this.ControlSize     = bounds.Size;
 }