2010-02-25 82 views
9

我正在編寫一個控制檯應用程序。它有它原始的控制檯,讓我們將其命名爲安慰A.我想這個應用程序通過C#做以下的事情:究竟是什麼「控制檯」?

  1. 公開賽在另一個線程另一個控制檯B,然後從A輸入,並將其輸出到B;
  2. 在A中鍵入一個命令,如dir,並在B中顯示輸出;

同時做上面的東西(仍然尚未完成。X_X),我發現自己缺乏通過什麼控制檯窗口爲,並理解它是如何分配到一個控制檯應用程序,特別是當我的控制檯應用程序開始運行時,第一個控制檯。有人能告訴我一些事嗎?

控制檯窗口實際上是視頻內存中的內存區域?或者是其他東西? 同一個進程中的不同線程可以擁有自己的不同的控制檯用於自己的I/O嗎?

非常感謝......

嗨,夥計們,我現在用一個控制檯應用程序,開始在一個新的進程的另一個控制檯應用程序。因此我可以同時輸出2個控制檯。


我的理解現在是,對於Windows操作系統,控制檯是一個特殊的窗口,它是操作系統分配給應用程序,而不-A-UI作爲必要的用戶界面的系統資源。 Windows操作系統處理系統準備的控制檯窗口與無UI用戶界面之間的連線。

+11

控制檯是計算機的一部分,它具有燈光和開關,也可能是紙帶閱讀器,在更昂貴的型號上。 – 2010-02-25 14:21:17

回答

6

在Windows中,控制檯是一個文本GUI窗口,您在運行「cmd.exe」時會看到。它允許你寫文本,並從窗口讀取文本,而不需要窗口有任何其他UI鑲邊,例如工具欄,菜單,選項卡等..

要開始,您需要加載Visual Studio ,創建一個新項目並選擇「控制檯應用程序」。更改樣板代碼的Visual Studio產生於:

using System; 
using System.Text; 

namespace MyConsoleApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.Write("Hello, world!"); 
      Console.ReadKey(); 
     } 
    } 
} 

當你運行你的應用程序,控制檯窗口將會打開文本「你好,世界!」它會保持打開,直到你按下一個鍵。這是一個控制檯應用程序。

控制檯窗口實際上是視頻內存中的內存區域嗎?或者是其他東西?

這不是物理上的視頻內存的存儲區域,它的「別的東西」。維基百科Win32 console頁面給出了一個相當強大的內部和外部描述。

+2

「是一個文本GUI」ummmm ....不是一個圖形用戶界面(圖形用戶界面),因此控制檯根本不是GUI(完全沒有圖形,當然折扣ASCII藝術)。這是區分具有GUI的東西的完整點,它沒有純粹的基於ASCII的界面。 – 2010-02-25 14:33:12

+0

控制檯通常被稱爲CLI(命令行界面)或CLUI(命令行用戶界面) – 2010-02-25 14:50:48

+0

@Grant,也許「文本UI窗口」可能是更好的放置方式。我的手指將G卡在那裏,甚至沒有想過它,或者意識到! =) – Rob 2010-02-25 15:05:10

2

控制檯應用程序只有一個窗口。它沒有窗口管理功能來產生孩子的「控制檯」。

您可以啓動其他控制檯應用程序,但這些是獨立的實體。

+0

@Johannes - 你應該將其作爲回答,因爲這似乎是OP之後的結果。 – 2010-02-25 14:34:42

+0

@Johannes Rossel:您可以創建多個控制檯,但您的過程一次只能綁定一個。 – 2010-02-25 14:43:57

1

A(OS),控制檯是一個過程(方含執行的一個或多個線程,它們都共享相同的存儲空間),而這個過程有:

  • 標準輸入(輸入字節流),在
  • 標準輸出(輸出字節流),你的關鍵,是什麼程序打印
  • 標準錯誤(輸出字節流),什麼程序當它在抱怨什麼時打印

所以,如果你想創建另一個控制檯(從.Net)並鏈接輸入/輸出我知道你必須創建一個進程(例如執行「cmd.exe」)。

我不知道用於過程操作的.Net API,但如果它像Java那樣可以連接stdin,out和err,因此您可以使用原來的創建過程來玩遊戲。

1

一個windows應用程序可以有一個控制檯,或者沒有控制檯,它不能有多個控制檯。請參閱AllocConsole的文檔。 控制檯基本上是'預Windows'時代的模擬,當時會有一個'控制檯',即連接到大型計算機的鍵盤和屏幕。 要做你想做的事情,你可以用自己的控制檯產生另一個進程,並在兩者之間進行通信,或者創建一個看起來像控制檯窗口的GUI應用程序。