• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Dict.CN 在線詞典, 英語學習, 在線翻譯

            學海苦作舟,書山勤為徑

            留下點回憶

            常用鏈接

            統計

            積分與排名

            Denoise

            English study

            Web技術

            數據壓縮

            一些連接

            最新評論

            認識控制臺-控制臺句柄、附著到控制臺、關閉控制臺

            附著到一個控制臺

            一個進程可以使用 AttachConsole 函數來附著到一個控制臺上,一個進程只能附著一個控制臺。

            一個控制臺可以有許多進程附著到它上面,調用 GetConsoleProcessList 函數可以得到附著到一個控制臺的列表。

            ?

            關閉一個控制臺

            進程可以使用 FreeConsole 函數來將其自身從一個控制臺脫離出來。如果其他進程共享這個控制臺,控制臺不會被銷毀,但調用 FreeConsole 函數的進程不能在使用它了,在進程調用 FreeConsole 之后,它可以使用 AllocConsole 來創建一個新的控制臺或 AttachConsole 來附著到另一個控制臺上。

            控制在最后一個附著的進程關閉的時候或調用 FreeConsole 的時候被關閉。

            ?

            控制臺句柄

            ?

            控制臺進程使用句柄來訪問控制臺的輸入和屏幕緩沖區。一個進程可以使用 GetStdHandle CreateFile CreateConsoleScreenBuffer 函數來打開這些句柄。

            GetStdHandle 函數提供一個獲得進程相關的標準輸入( STDIN )、標準輸出( STDOUT )和標準錯誤( STDERR )句柄。在控制臺創建過程中,系統創建這些句柄。最初的 STDIN 是一個指向控制臺輸入緩沖區的句柄, STDOUT STDERR 是控制臺活動屏幕緩沖區的句柄。然而, SetStdHandle 函數可以改變 STDIN STDOUT STDERR 關聯的句柄來重定向標準句柄。因為父進程的標準句柄可以被子進程繼承,后面調用 GetStdHandle 函數返回的是重定向的句柄。 GetStdHandle 返回的句柄可以指向其他的句柄不一定是控制臺 I/O 。例如,在創建子進程之前,父親進程使用 SetStdHandle 來將 STDIN 設置為一個管道句柄,那么這個特性會被子進程繼承。當子進程調用 GetStdHandle 的時候返回的是管道句柄。這意味著父親進程能控制子進程的標準句柄, GetStdHandle 返回的句柄有 GENERIC_READ|GENERIC_WRITE 訪問權限,當然如果在 SetStdHandle 的時候設置較少的訪問權限另外說。

            GetStdHandle 返回的句柄值不是 0 1 2 ,因此在 Stdio.h STDIN STDOUT STDERR )中預定義的流常量不能在需要一個控制臺句柄的函數中使用。

            CreateFile 函數即使 STDIN STDOUT 沒有被重定向的情況下,也可以讓一個進程得到輸入緩沖區和活動屏幕緩沖區的句柄。為了打開一個控制臺輸入緩沖區的句柄,需要在調用 CreateFile 的時候指定 CONIN$ 值,而指定 CONOUT$ 值可以打開一個控制臺活動屏幕緩沖區的句柄。 CreateFile 函數使你可以通過它返回的句柄來讀寫操作。

            函數 CreateConsoleScreenBuffer 創建一個新的屏幕緩沖區且返回這個句柄,這個句柄可以在所有接受一個控制輸出作為參數的函數中使用。新的屏幕緩沖區不會是活動的,只有調用 SetConsoleActiveScreenBuffer 函數的時候指定該值才會被設置為活動的。活動屏幕緩沖區的改變不會改變 GetStdHandle 的值,同樣使用 SetStdHandle 改變 STDOUT 句柄也不會影響活動屏幕緩沖區。

            CreateFile CreateConsoleScreenBuffer 函數返回的句柄能在任何需要控制臺輸入緩沖區或控制臺屏幕緩沖區作為參數的函數中, GetStdHandle 返回的句柄只要沒有被重定向為其他的句柄都可以在控制臺函數中使用,如果標準句柄被重定向為指向一個文件或管道,這些句柄只能被 ReadFile WriteFile 函數使用。

            進程可以使用 DuplicateHandle 函數來創建一個控制臺句柄的副本,可以指定不同的訪問和繼承權限。注意,進程可以自己使用而創建一個控制臺句柄副本。這與其他的句柄類型不同(例如文件、管道、信號量對象),這些類型可以通過 DuplicateHandle 來創建一個有效的句柄,而別的進程也可以使用。

            posted on 2006-04-25 13:52 笨笨 閱讀(1274) 評論(4)  編輯 收藏 引用

            評論

            # re: 彩票預測 2006-04-25 16:55 彩票預測

            金南山第106期3D推介 原創]金南山第106期3D實戰方案!!! 106期膽碼:28 大復式:12357/13579/02468 小復式:157/369/248 喜歡合買的朋友,可以加我QQ448967360聊聊!
              回復  更多評論   

            # re: 認識控制臺-控制臺句柄、附著到控制臺、關閉控制臺 2006-04-28 00:06 Cocalele

            內容還是很好的,就是感覺寫的有點亂  回復  更多評論   

            # re: 認識控制臺-控制臺句柄、附著到控制臺、關閉控制臺 2006-04-28 13:35 笨笨

            呵呵,謝謝,這是及時翻譯的,所有有點亂,下次寫好一點  回復  更多評論   

            # re: 認識控制臺-控制臺句柄、附著到控制臺、關閉控制臺 2010-04-20 16:12 MeJustMe

            我覺得內容非常不錯,很少看到這方面的東西,要是能整理一下就更好了,看起來有點亂。  回復  更多評論   

            久久亚洲国产午夜精品理论片| 99久久精品免费观看国产| 久久青青草原精品国产软件| 久久99精品国产麻豆婷婷| 久久这里有精品视频| 日韩精品久久无码中文字幕| 亚洲国产精品久久久久婷婷软件| 污污内射久久一区二区欧美日韩| 国产精品乱码久久久久久软件| 久久精品国产91久久综合麻豆自制 | 久久久久婷婷| AAA级久久久精品无码片| 久久亚洲AV永久无码精品| 囯产精品久久久久久久久蜜桃| 亚洲精品国产成人99久久| 国内精品综合久久久40p| 久久播电影网| 2021国产成人精品久久| 久久人妻少妇嫩草AV无码专区| 亚洲国产精品无码久久青草| 99久久国产综合精品五月天喷水| 久久综合九色综合网站| 久久久久国产精品人妻| 精品久久久一二三区| 久久久久久噜噜精品免费直播| 久久99国产精品久久99果冻传媒| 亚洲av伊人久久综合密臀性色| 亚洲午夜精品久久久久久浪潮| 91久久国产视频| 国産精品久久久久久久| A级毛片无码久久精品免费| 成人资源影音先锋久久资源网| 久久久久亚洲AV成人片| 久久精品国产亚洲精品2020| 亚洲精品tv久久久久久久久 | 久久亚洲精品国产精品婷婷| 国产精品免费久久| 深夜久久AAAAA级毛片免费看| 久久久久综合国产欧美一区二区 | 国内精品久久久久久久涩爱 | 久久久久国产一级毛片高清版|