从C#WinService迁移到WinForms - 删除表单

时间:2012-04-13 12:09:33

标签: c# winforms service process

我已经创建了一个WinService,但不幸的是Win7(和Vista)不支持从服务中获取屏幕截图。我要将程序重写为与WinService不同的东西,这种东西没有形式......

你会建议什么?

  • 控制台应用程序有一个控制台 - 我不需要任何控制台。
  • WinForms应用程序有一个表单 - 我不需要任何表单。

是否可以完全从winforms应用程序中删除表单?我不想隐藏进程或任何内容,但我希望它在后台作为监听器工作(就像一个服务)。

我将如何关闭它?简单! “停止服务”的替代方法应该是任务管理器的“结束任务”。

  • 没有身体形态,没有专注是至关重要的条件。

编辑:

感谢您的链接!所以我完全删除了 form.cs ,并对 program.cs 进行了以下更改:

static class Program
{
    static Thread workerThread;

    [STAThread]
    static void Main()
    {
        //Application.EnableVisualStyles();
        //Application.SetCompatibleTextRenderingDefault(false);
        //Application.Run(new Form1());

        load();
        workerThread.Start();
    }

    public static void load()
    {
        workerThread = new Thread(DoWork);
        workerThread.SetApartmentState(ApartmentState.STA);
    }

    static void DoWork()
    {
        while (true)
        {
            string directory = (@"C:\10\new\"); string name = (".bmp");
            string filename = String.Format("{0:hh-mm-ss}{1}", DateTime.Now, name);
            string path = Path.Combine(directory, filename);

            Bitmap bmp = new Bitmap(@"C:\10\1.bmp");
            bmp.Save(path);
            bmp.Dispose();
            Thread.Sleep(1100);
        }
    } 

我是否需要进行一些其他更改,或者它确实可以吗?我不希望我的应用程序窃取焦点..只需要一个进程。

  • 是“Application.Run();”需要的?
  • 此应用有图标吗?

1 个答案:

答案 0 :(得分:2)

您可以创建一个控制台应用程序并将其更改为VS中的Windows窗体。然后就不会有任何控制台,只有任务管理器中的进程,但不会限制与桌面的交互。