//private IEnumerable<IntPtr> GetWindowHandles(IntPtr handle, int indent) //{ // yield return handle; // var childHandles = new ChildWindowHandles(handle); // if(!childHandles.Any()) // { // yield break; // } // foreach (var childHandle in childHandles) // { // yield return childHandle; // } //} /// <summary> /// 指定した対象を指定した種類でキャプチャする /// </summary> /// <param name="target">キャプチャ対象</param> /// <param name="type">キャプチャ種類</param> private void CaptureImage(CaptureTarget target, CaptureType type) { //List<WindowInfo> windowInfos = new List<WindowInfo>(); //foreach (var handle in new TopLevelWindowHandles()) //{ // windowInfos.Add(new WindowInfo(handle)); //} //foreach(var windowInfo in windowInfos) //{ // Console.WriteLine($"{windowInfo.WindowText} : {windowInfo.ClassName}"); //} try { // キーボードフック中断 KeyboardHook.Pause(); // 矩形領域 if (target == CaptureTarget.RectArea) { using (Bitmap screenBitmap = this.CaptureScreen()) using (CaptureForm captureForm = new CaptureForm(screenBitmap)) { captureForm.ShowDialog(); using (Bitmap captureBitmap = captureForm.CaptureBitmap) { this.SaveImage(captureBitmap, type); } } } // デスクトップ else if (target == CaptureTarget.Desktop) { using (Bitmap captureBitmap = this.CaptureScreen()) { this.SaveImage(captureBitmap, type); } } // アクティブウィンドウ else if (target == CaptureTarget.ActiveWindow) { using (Bitmap captureBitmap = this.CaptureActiveWindow()) { this.SaveImage(captureBitmap, type); } } } finally { // キーボードフック再開 KeyboardHook.Start(); } }
/// <summary> /// コンストラクタ /// </summary> /// <param name="screenBitmap">矩形選択対象のビットマップ</param> /// <param name="mousePoiont">マウスカーソルの初期位置</param> public CoordinateForm(CaptureForm captureForm, Bitmap screenBitmap, Point mousePoiont) { // コンポーネントの初期化 InitializeComponent(); // マウスイベントハンドラの初期化 this.InitializeMouseEventHandler(this); // 親フォーム this.captureForm = captureForm; // 矩形選択対象のBitmap this.screenBitmap = screenBitmap; // マウス位置 this.mousePoint = mousePoiont; }