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;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值