/// <summary> /// メニュー項目作成 /// </summary> /// <returns></returns> private ContextMenuStrip CreateMenu() { // 右クリックメニュー var eResult = new ContextMenuStrip(); // メニュー項目 クリップボードにコピー var eMenuItemClipBoard = new ToolStripMenuItem(); eMenuItemClipBoard.Name = "ClipBoard"; eMenuItemClipBoard.Text = "&クリップボードにコピーする"; eMenuItemClipBoard.Checked = true; eMenuItemClipBoard.Click += new EventHandler(OnMode_Click); MenuGroupItems.Add(eMenuItemClipBoard); // メニュー項目 画像を保存する var eMenuItemSavePic = new ToolStripMenuItem(); eMenuItemSavePic.Name = "SavePic"; eMenuItemSavePic.Text = "&画像を保存する"; eMenuItemSavePic.Checked = false; eMenuItemSavePic.Click += new EventHandler(OnMode_Click); MenuGroupItems.Add(eMenuItemSavePic); // メニュー項目 保存フォルダを開く var eMenuItemDirOpen = new ToolStripMenuItem(); eMenuItemDirOpen.Text = "&保存フォルダを開く"; eMenuItemDirOpen.Click += new EventHandler(OnDirOpen_Click); // メニュー項目 終了 var eMenuItemClose = new ToolStripMenuItem(); eMenuItemClose.Text = "&終了"; eMenuItemClose.Click += new EventHandler(OnClose_Click); // 右クリックメニューに追加 eResult.Items.Add(eMenuItemClipBoard); eResult.Items.Add(eMenuItemSavePic); eResult.Items.Add(eMenuItemDirOpen); eResult.Items.Add(eMenuItemClose); return(eResult); }
/// <summary> /// アクティブウインドウのスクリーンキャプチャを保存またはクリップボードにコピーする /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnMouseOperation(object sender, EventArgs e) { try { // 左クリックと右クリックが押し続けられている場合 if (IsKeyPress(Keys.LButton) && IsKeyPress(Keys.RButton)) { // WindowsAPI情報 var eWindowsAPI = new WindowsAPI(); // アクティブウインドウのサイズと位置を取得する var eRect = eWindowsAPI.GetWindowRectangle(); // 幅 var eWidth = eRect.Right - eRect.Left; // 高さ var eHeight = eRect.Bottom - eRect.Top; // 新規RECT作成 var eRectangle = new Rectangle(eRect.Left, eRect.Top, eWidth, eHeight); // ビットマップに変換 var eBitmap = new Bitmap(eRectangle.Width, eRectangle.Height, PixelFormat.Format32bppArgb); // スクリーンショット using (var eFromImage = Graphics.FromImage(eBitmap)) { eFromImage.CopyFromScreen(eRectangle.X, eRectangle.Y, 0, 0, eRectangle.Size, CopyPixelOperation.SourceCopy); } // チェックされたメニュー項目を取得 var eCheckedItem = MenuGroupItems .Where(x => x.CheckState == CheckState.Checked) .FirstOrDefault(); // クリップボードにコピーする場合 if (eCheckedItem.Name == "ClipBoard") { Clipboard.SetImage(eBitmap); } // 画像を保存する場合 if (eCheckedItem.Name == "SavePic") { // 自分自身のディレクトリパス var eAppDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); // 保存ディレクトリパス var eSaveDir = Path.Combine(eAppDir, "Pictures"); // フォルダ作成 Directory.CreateDirectory(eSaveDir); // ファイル作成日 var eCreateTime = DateTime.Now.ToString("yyyyMMddHHmmss"); // 保存ファイルパス生成 var eSaveFilePath = Path.Combine(eSaveDir, $"Pict_{eCreateTime}.png"); // すでに存在する場合 if (File.Exists(eSaveFilePath)) { // ファイルを削除 SafeDeleteFile(eSaveFilePath); } // 画像ファイルをPNGで保存する eBitmap.Save(eSaveFilePath, ImageFormat.Png); } // 後片付け eBitmap.Dispose(); } } catch (Exception eException) { // デバッグログ出力 Debug.WriteLine(eException.Message); } }