2009-06-01 46 views
22

Tôi có ứng dụng bảng điều khiển tôi đang sử dụng để chạy các tác vụ đã lên lịch thông qua trình lên lịch cửa sổ. Tất cả các thông tin liên lạc đến/từ ứng dụng là trong email, ghi nhật ký sự kiện, nhật ký cơ sở dữ liệu. Có cách nào tôi có thể ngăn chặn các cửa sổ giao diện điều khiển từ sắp tới?Ứng dụng Giao diện điều khiển .Net không hiển thị Bảng điều khiển

Trả lời

44

Chắc chắn. Xây dựng nó dưới dạng ứng dụng winforms và không bao giờ hiển thị biểu mẫu của bạn.

Chỉ cần cẩn thận, bởi vì sau đó nó không thực sự là một ứng dụng giao diện điều khiển nữa, và có một số môi trường mà bạn sẽ không thể sử dụng nó.

+0

Bất kỳ cách nào tôi có thể thực hiện trong dự án hiện tại để tôi không phải di chuyển nội dung? – Jeff

+16

Nhấp chuột phải vào dự án, đi đến Thuộc tính và trong biểu mẫu bật lên, thay đổi từ ứng dụng Bảng điều khiển thành ứng dụng WinForms, đóng và biên dịch lại. –

+0

Cảm ơn Chris, điều đó đã hiệu quả! – Jeff

1

Tại sao bạn không làm cho ứng dụng trở thành Dịch vụ Windows?

+4

Không có công việc đã lên lịch! = Dịch vụ windows. Trừ khi anh ta sử dụng e-mail để bắt đầu xử lý, trong trường hợp đó một dịch vụ là một lựa chọn tốt hơn. –

+2

Có, đã đi xuống con đường đó trước đây. Tôi sử dụng để tạo ra các công việc theo lịch trình bằng cách sử dụng cơ sở hạ tầng dịch vụ, nhưng cuối cùng nhận ra làm theo cách đó dẫn đến nhiều mã không cần thiết và nâng cấp khó khăn. Tóm lại, nó tái tạo cơ sở hạ tầng mà công cụ lập lịch tác vụ đã cung cấp miễn phí! – Jeff

+1

Đó là tốt nhưng tôi không thấy lý do để downvote câu hỏi của Badaro. –

2

Đó là một hack, nhưng bài viết trên blog sau đây mô tả làm thế nào bạn có thể ẩn giao diện điều khiển cửa sổ:

http://expsharing.blogspot.com/2008/03/hideshow-console-window-in-net-black.html

+0

Rất đẹp. Tôi sẽ sử dụng điều này nhiều hơn một lần tại một số điểm trong tương lai. Cảm ơn Philippe. BTW, tôi không nghĩ rằng gọi user32.dll là một hack nếu nó không phải trong khuôn khổ .Net. Nó chỉ là "làm thế nào nó được thực hiện." – philologon

9

vay từ MSDN (link text):

using System.Runtime.InteropServices; 

... 
     [DllImport("user32.dll")] 
     public static extern IntPtr FindWindow(string lpClassName,string lpWindowName); 

     [DllImport("user32.dll")] 
     static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); 

... 

     //Sometimes System.Windows.Forms.Application.ExecutablePath works for the caption depending on the system you are running under. 
     IntPtr hWnd = FindWindow(null, "Your console windows caption"); //put your console window caption here 
     if(hWnd != IntPtr.Zero) 
     { 
      //Hide the window 
      ShowWindow(hWnd, 0); // 0 = SW_HIDE 
     } 


     if(hWnd != IntPtr.Zero) 
     { 
      //Show window again 
      ShowWindow(hWnd, 1); //1 = SW_SHOWNORMA 
     } 
2

Schedule nhiệm vụ để chạy với tư cách người dùng khác với tài khoản của bạn và bạn sẽ không có cửa sổ bật lên. . .

2

Chỉ cần định cấu hình Tác vụ theo lịch là "Chạy xem người dùng có đăng nhập hay không".

Các vấn đề liên quan