清除剪贴板

时间:2013-03-27 17:16:04

标签: c# console clipboard

我在C#中有以下控制台应用程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
using System.Windows.Forms;

namespace PreventScreenshot
{
    class Program
    {
        [STAThread]
        public static void Main(string[] args)
        {
            System.Timers.Timer timer1 = new System.Timers.Timer();
            timer1.Elapsed += new ElapsedEventHandler(timer_Tick);
            timer1.Interval = 1000;
            timer1.Enabled = true;
            timer1.Start();

            Console.WriteLine("---Prevent Screenshot from being taken---");
            Console.WriteLine();
            Console.WriteLine("DLL operation started.  Try to take a screenshot");
            Console.WriteLine();
            Console.WriteLine("Press enter to exit");
            Console.ReadLine();
        }

        public static void timer_Tick(object sender, EventArgs e)
        {
            Clipboard.Clear();
        }
    }
}

据说,应用程序每秒都会清除剪贴板。但是,它不起作用。有什么问题?

编辑:

我刚编辑了代码。当我尝试运行程序时,剪贴板仍然没有清除。发生了什么事?

2 个答案:

答案 0 :(得分:6)

Console.ReadLine()

之后移动timer1.Start()

目前,您的应用程序正在等待按下输入,然后启动计时器并立即存在。

关于您编辑过的帖子:

您正在使用Timer中的System.Windows.Forms,它不适合控制台应用程序。尝试使用System.Timers中的计时器。

答案 1 :(得分:2)

  1. 您需要在ReadLine()调用之前设置并启动计时器,否则您的代码将无法访问它。

  2. 您的应用程序线程需要处于单线程单元(STA)模式。将[STAThread]属性应用于该方法。 请参阅:http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx