0

私は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();
        }
    }
}

おそらく、アプリケーションは毎秒クリップボードをクリアします。しかし、それは機能していません。何が問題ですか?

編集:

コードを編集しただけです。プログラムを実行しようとすると、クリップボードがまだクリアされません。何が起こっている?

4

2 に答える 2

6

Console.ReadLine()後に移動timer1.Start()

現在、アプリケーションは Enter キーが押されるのを待ってから、タイマーを開始してすぐに終了します。

編集した投稿について:

Timerから使用しSystem.Windows.Formsています。コンソール アプリケーションには適していません。からタイマーを使用してみてくださいSystem.Timers

于 2013-03-27T17:16:57.710 に答える
2
  1. ReadLine() 呼び出しの前にタイマーをセットアップして開始する必要があります。そうしないと、コードが到達しません。

  2. アプリケーション スレッドはシングル スレッド アパートメント (STA) モードである必要があります。[STAThread] 属性をメソッドに適用します。参照: http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx

于 2013-03-27T17:19:00.490 に答える