2012-04-13 14 views
0

我創建了一個WinService,不幸的是Win7(和Vista)不支持從服務中獲取屏幕截圖。我將重寫一個不同於WinService的程序,一些沒有形式的東西。從C#WinService移動到WinForms - 刪除表格

你會建議什麼?

  • 控制檯應用程序有一個控制檯 - 我不需要任何。
  • 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

Dup - http://stackoverflow.com/questions/4721962/c-sharp-application-run-without-form – 2012-04-13 12:14:13

+0

@MicahArmantrout感謝您的鏈接!你可以看看我的編輯?謝謝 – Alex 2012-04-13 12:51:30

+0

「沒有物理形式,沒有重點是關鍵條件。」聽起來對我來說是惡意的 – 2012-04-13 13:03:01

回答

2

您可以創建一個控制檯應用程序,並將其更改爲VS中的Windows窗體。那麼就不會有任何控制檯,只是任務管理器中的進程,但不會限制與桌面的交互。

+0

「並將其更改爲VS中的Windows窗體」:你的意思是更改「輸出類型:Windows應用程序」?它會如何與我現在所擁有的不同? (見編輯) – Alex 2012-04-13 13:12:07

+0

似乎是其中一個優點是我每次需要調試我的應用程序時都可以切換到控制檯..其他任何可能? – Alex 2012-04-13 13:21:42

+0

@亞歷克斯對不起,我應該更清楚,是的,改變輸出類型。你的代碼看起來很好,但我的優點是你可以像前面提到的那樣更容易地進行調試。它更容易管理和運行,它顯示在任務管理器中,並且可以與桌面進行交互,我認爲這符合您的所有要求。 – 2012-04-13 13:37:48