0

我创建了一个 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);
        }
    } 

我需要做一些其他的改变还是没关系?我不希望我的应用程序窃取焦点.. 必须存在一个过程。

  • 是“应用程序。运行();” 需要吗?
  • 这个应用程序有图标吗?
4

1 回答 1

2

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

于 2012-04-13T13:03:33.557 回答