2012-01-11 20 views
5

Tôi có một ứng dụng, mà tôi muốn chạy như thế này:Chạy ứng dụng như ứng dụng với args thông qua Bảng điều khiển, nếu không chạy như ứng dụng Win Form

  • nếu args gửi - Tôi muốn nó hoạt động như ứng dụng giao diện điều khiển

  • nếu args không được gửi - tôi muốn nó chạy như ứng dụng windows Forms

khi tôi đặt loại đầu ra để an ủi và khi args không được phát hiện tôi đang tạo điều kiện cho phong cách trực quan và runni ng. Nó hoạt động rất tốt, ngoại trừ cửa sổ giao diện điều khiển mở/đóng một cách nhanh chóng và điều đó thực sự làm phiền tôi. Có một cách để không có cửa sổ giao diện điều khiển xuất hiện? Tôi đang tìm một cách để không tạo ra nó cả.

+1

Tôi sẽ làm theo cách khác, làm cho nó trở thành một ứng dụng WinForms, bởi vì bạn nhận được mã trước khi bất kỳ thứ gì được tạo ra (trong hàm 'main' của bạn trong' program.cs'). –

+0

http://www.rootsilver.com/2007/08/how-to-create-a-consolewindow –

+0

bạn có thể chia thành ba tệp thi hành không? Một cho các ứng dụng cửa sổ, một cho các ứng dụng giao diện điều khiển và một để bootsrap một trong hai? Rõ ràng, bạn sẽ phải tạo một thư viện lớp cho động cơ của bạn. –

Trả lời

4

Tôi sẽ làm theo cách khác, biến nó thành ứng dụng WinForms, bởi vì bạn nhận được mã trước khi bất kỳ thứ gì được tạo (trong hàm chính của bạn trong program.cs).

Xem liên kết này: http://www.rootsilver.com/2007/08/how-to-create-a-consolewindow

+0

có vẻ như liên kết ở trên bị hỏng. Bạn có nội dung ở nơi khác mà bạn có thể chia sẻ không? –

4
  1. Tạo một ứng dụng Windows.Forms
  2. Thêm một chức năng bên ngoài

    [System.Runtime.InteropServices.DllImport("kernel32.dll")] 
    private static extern bool AllocConsole(); 
    
  3. Trong phương pháp chính của ứng dụng của bạn:

    if (windows_app) 
    { 
        Application.EnableVisualStyles(); 
        Application.SetCompatibleTextRenderingDefault(false); 
        Application.Run(new Form1()); 
    } 
    else 
    { 
        AllocConsole(); 
        Console.WriteLine("foo"); 
    } 
    
+0

Thách thức ở đây là AllocConsole() xuất hiện để tạo cửa sổ bảng điều khiển mới thay vì sử dụng bảng điều khiển mà bạn chạy ứng dụng từ đó. "foo" sẽ xuất hiện trong cửa sổ mới, ngay lập tức biến mất khi ứng dụng thoát khỏi lời gọi dòng lệnh của nó. –

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