C# 清除剪贴板
我有以下C语言的控制台应用程序# 据推测,应用程序每秒都会清除剪贴板。然而,它不起作用。有什么问题 编辑:C# 清除剪贴板,c#,console,clipboard,C#,Console,Clipboard,我有以下C语言的控制台应用程序# 据推测,应用程序每秒都会清除剪贴板。然而,它不起作用。有什么问题 编辑: 我刚刚编辑了代码。当我试图运行程序时,剪贴板仍然没有被清除。发生了什么事?在timer1.Start()之后移动Console.ReadLine() 当前,应用程序正在等待enter键,然后启动计时器并立即存在 关于您编辑的帖子: 您正在使用System.Windows.Forms中的计时器,它不适用于控制台应用程序。尝试使用系统中的计时器。计时器 您需要在ReadLine()调用之前设置
我刚刚编辑了代码。当我试图运行程序时,剪贴板仍然没有被清除。发生了什么事?在
timer1.Start()之后移动Console.ReadLine()
当前,应用程序正在等待enter键,然后启动计时器并立即存在
关于您编辑的帖子:
您正在使用System.Windows.Forms
中的计时器
,它不适用于控制台应用程序。尝试使用系统中的计时器。计时器
您需要在ReadLine()调用之前设置并启动计时器,否则代码将无法到达它
应用程序线程需要处于单线程单元(STA)模式。将[StatThread]属性应用于该方法。
见:
这是不明智的。剪贴板除了用于屏幕截图之外,还用于许多其他用途;你会让你的用户非常不高兴。你说的“它不工作”是什么意思?症状是什么?我编辑了代码(见问题)。但是它仍然不起作用。我尝试使用System.Timers。但是,它似乎不支持Tick方法。你知道怎么做吗?这是一门不同但又相似的课。这件事已经过去了。@alex谢谢你。我再次修改了代码(请参见问题)。但是,我得到了这个错误:ThreadStateException-在进行OLE调用之前,必须将当前线程设置为单线程单元(STA)模式。确保你的主函数上有STAThreadAttribute标记。哦,上帝,请停止更改原始问题:)所有答案看起来都很奇怪,因为它们会提示已经存在的更改。并按照jlew的建议,将[StatThread]属性放在main方法中。但是它仍然不起作用。谢谢你的回复。我编辑了代码,我认为有些东西起作用了。但是,我得到了以下错误:ThreadStateException-在进行OLE调用之前,必须将当前线程设置为单线程单元(STA)模式。确保主函数上标记了STAThreadAttribute。
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();
}
}
}