Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 /// <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);
     }
 }