cmd窗口輸出

有時候程序需要輸出cmd窗口,查看運行過程的輸出,下面這些就是很好的例子。

     AllocConsole();    //調用cmd窗口

    freopen("CONOUT$","w+t",stdout);      //進行輸出流定向

    freopen("CONIN$","r+t",stdin);           //進行輸入流定向

    ps:  當然用完要關閉,在程序退出的地方釋放   FreeConsole();  

當然如果想要在運行 到時候,cmd窗口的關係按鈕失效,也是有辦法的。

  原地址 :http://bbs.csdn.net/topics/330160646

int main(int argc, char * argv[])
{
    char buf[MAX_PATH];   
    GetConsoleTitle(buf, MAX_PATH);   
    HWND hwnd = ::FindWindow(NULL, buf);   
    HMENU hmenu = ::GetSystemMenu(hwnd, FALSE);   
    if (hwnd)
    {
        /** @brief 2.禁用控制檯窗口的關閉按鈕*/
        ::RemoveMenu(hmenu, SC_CLOSE, MF_BYCOMMAND);
 
        /** @brief 3.控制檯程序啓動時窗口最小化*/
        ::SendMessage(hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
    }
 
    /** @brief 4.獲得服務器啓動程序當前路徑,並添加到註冊表自啓動*/
    TCHAR workingPath[MAX_PATH];
    ZeroMemory(workingPath, MAX_PATH);
 
    if (GetModuleFileName(NULL, workingPath, MAX_PATH) > 0)
    {
        //設置exe程序的工作路徑,這裏設置爲exe文件所在的位置爲工作路徑
        char path[3000];
        memset(path, 0, 3000);
        for (int i = strlen(workingPath) - 1; i >= 0; --i)
        {
            if (workingPath[i] == '\\')
            {
                strncpy(path, workingPath, i + 1);
                break;
            }
        }
        SetCurrentDirectory(path);
 
        //取得當前工作路徑成功
        HKEY hKey;
        if (RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", &hKey) != ERROR_SUCCESS)
        {
            //創建註冊表成功
        }
        else 
        {
            if (RegSetValueEx(hKey, "CASCO Log Sever", 0, REG_SZ, (CONST BYTE *)(LPCTSTR)workingPath, strlen(workingPath)) != ERROR_SUCCESS)
            {
                //設置註冊表失敗,不自啓動
            }
            else
            {
                //設置註冊表成功,啓動設置成功
            }
            RegCloseKey(hKey);
        }
    }
    else
    {
        //取得當前工作路徑成功失敗,不自啓動
    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章