我在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();
}
}
}
据说,应用程序每秒都会清除剪贴板。但是,它不起作用。有什么问题?
编辑:
我刚编辑了代码。当我尝试运行程序时,剪贴板仍然没有清除。发生了什么事?
答案 0 :(得分:6)
在Console.ReadLine()
timer1.Start()
目前,您的应用程序正在等待按下输入,然后启动计时器并立即存在。
关于您编辑过的帖子:
您正在使用Timer
中的System.Windows.Forms
,它不适合控制台应用程序。尝试使用System.Timers
中的计时器。
答案 1 :(得分:2)
您需要在ReadLine()调用之前设置并启动计时器,否则您的代码将无法访问它。
您的应用程序线程需要处于单线程单元(STA)模式。将[STAThread]属性应用于该方法。 请参阅:http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx