Clipboard Text

C# で Clipboard を使って、文字列を Copy&Paste します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. Clipboard には、文字列やイメージやファイルリストを一時的に保存することが出来ます。
    Copy&Paste や Drag&Drop は .NET のバージョンによって違いがあります。
    このプログラムは .NET Framework 2.0 以降に対応します。
    私がテストした実行環境は DLL(Dynamic Link Library) を参照して下さい。
    最も簡単な Clipboard の例題として、文字列の Copy と Paste のプログラムを作成します。
  2. ClipSetGet.cs の全ソースコードです。
    完成したプログラムの全ソースコードなのでコンソールモードで実行することも出来ます。
    実行の方法は Command Line から Windows プログラムを実行 を参照して下さい。
    もちろん Visual C++ のプロジェクトを作成して、ソースファイルをコンパイル&実行することも出来ます。
    /****************************************/
    /*★ クリップボードの基礎     前田 稔 ★*/
    /****************************************/
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    public class MyForm : Form
    {
        int cnt = 0;
    
        public MyForm()
        {
            Paint += new PaintEventHandler(MyHandler);
            MouseDown += new MouseEventHandler(OnMyMouseDown);
        }
    
        private void MyHandler(object sender, PaintEventArgs e)
        {
            if (Clipboard.ContainsText())
            {
                Graphics g = e.Graphics;
                Font f = new Font("MS 明朝", 24);
                g.DrawString(Clipboard.GetText(), f, Brushes.Red, new PointF(10F, 50F));
            }
        }
    
        private void OnMyMouseDown(object sender, MouseEventArgs e)
        {
            cnt++;
    
            //アプリケーション終了後、クリップボードからデータは削除される
            Clipboard.SetDataObject("カウント=" + cnt.ToString());
    
            Invalidate();
        }
    }
    
    class form01
    {
        [STAThread]
        public static void Main()
        {
            MyForm mf = new MyForm();
            Application.Run(mf);
        }
    }
    
  3. マウスのクリックをカウントして、Clipboard.SetDataObject() で Clipboard に書き出します。
            cnt++;
            //アプリケーション終了後、クリップボードからデータは削除される
            Clipboard.SetDataObject("カウント=" + cnt.ToString());
        
    アプリケーション終了後もクリップボードにデータを残しておくときは true を設定します。
            Clipboard.SetDataObject("カウント=" + cnt.ToString(), true);
        
  4. Clipboard から文字列を取得して表示します。
    Clipboard.ContainsText() で文字列が格納されているかを調べます。
    Clipboard.GetText() が文字列を取得するコードです。
            if (Clipboard.ContainsText())
            {
                Graphics g = e.Graphics;
                Font f = new Font("MS 明朝", 24);
                g.DrawString(Clipboard.GetText(), f, Brushes.Red, new PointF(10F, 50F));
            }
        

表示専用プログラム

  1. Clipboard から文字列を取得して表示するソースコードを別ファイルにしました。
    /************************************************/
    /*★ クリップボードの文字列を取得     前田 稔 ★*/
    /************************************************/
    using System;
    using System.Windows.Forms;
    
    class ClipbordClass
    {
        [STAThread]
        public static int Main()
        {
            //クリップボードに文字列データがあるか確認
            if (Clipboard.ContainsText())
            {
                //文字列データがあるときはこれを取得する
                //取得できないときは空の文字列(String.Empty)を返す
                Console.WriteLine(Clipboard.GetText());
            }
            return 0;
        }
    }
    
  2. テキストエディタで文字列をコピーして、このプログラムを起動するとコピーした文字列が表示されます。
    他のソフトでコピーした文字列でも、このプログラムで表示されることを確かめて下さい。

表示専用プログラム-2

  1. クリップボードのデータ形式は IDataObject です。
    今回は IDataObject を取得してから、文字列データの判定をしてみました。
    /***********************************************************/
    /*★ クリップボードの形式は IDataObject です     前田 稔 ★*/
    /***********************************************************/
    using System;
    using System.Windows.Forms;
    
    class ClipbordClass
    {
        [STAThread]
        public static int Main()
        {
            //クリップボードを取得
            IDataObject data = Clipboard.GetDataObject() ;
    
            //文字列のとき、印字する
            if (data.GetDataPresent(DataFormats.Text))
            {
                Console.WriteLine((string)data.GetData(DataFormats.Text));
            }
            return 0;
        }
    }
    
  2. 取得したクリップボードの形式が文字列のとき印字します。
    他のソフトでコピーした文字列でも、このプログラムで表示されることを確かめて下さい。
  3. Windows(C++) でも同様のプログラムを作成しています。
    Clipboard の書き込みと読み出し を参照して下さい。

超初心者のプログラム入門(C# Frame Work)