请问如何实现 创造出一个CMD视窗,并将想呈现的字串输出到里面?

strong12345 2016-09-20 03:38:20
各位大神好∶

近日想在BCB下实现一个debug Console视窗功能,做了各种尝试之后,始终无法实现 (T_T)

具体想实现的功能为∶
在 BCB6 视窗开发环境下(不是 Console环境),额外创造一个Console视窗,
并能够把自己想输出的文字资讯,输出到该视窗内
主要是想显示一些程式控制的debug资讯,希望利用console文字输出来实现

主要想实现的方法为 创造管道 + 创造子进程的CMD视窗
再透过管道输出资讯 给该CMD视窗接收

但始终没办法成功

附上代码

请各位大神救命一下
谢谢 <(_ _)>

另外...小弟没分了,请各位大侠不吝帮忙一下,谢谢

   
//--------------------------------------------
//句柄安全描述
SECURITY_ATTRIBUTES sa = {0}; //句柄安全描述结构
sa.bInheritHandle = TRUE; //是否继承句柄
sa.lpSecurityDescriptor = NULL; //使用系统默认的安全描述符
sa.nLength = sizeof(SECURITY_ATTRIBUTES); // sa结构的长度

//--------------------------------------------
//创建管道
HANDLE hWrite ; //指向句柄的写入指针
HANDLE hRead ; //指向句柄的读出指针

//执行创建管道
if(!CreatePipe (&hRead, &hWrite, &sa, 0)){
ShowMessage( "CreatePipe ERROR" ) ;
}

//--------------------------------------------
//创造命令行窗口
STARTUPINFO si = {0}; //新进程的主窗口特性结构
GetStartupInfo(&si); //该函数取得进程在启动时被指定的 STARTUPINFO 结构

si.hStdError = GetStdHandle((STD_OUTPUT_HANDLE)); //使用默认输出STD管道
si.hStdOutput = GetStdHandle((STD_OUTPUT_HANDLE)); //使用默认输出STD管道
si.hStdInput = hRead ; //重定向输入管道

si.wShowWindow = SW_SHOW; //显示窗口
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW ; //创造窗口方式

PROCESS_INFORMATION pi = {0}; //创建进程时相关的数据结构之一,该结构返回有关新进程及其主线程的信息

//创造进程
if(!CreateProcess( NULL, "cmd" ,NULL, NULL, TRUE, NULL, NULL, NULL, &si, &pi) ){
ShowMessage( "CreateProcess ERROR" ) ;
}

DWORD dwWrite = 0; //字符写入
WriteFile( hWrite, "测试写入文字", 10, &dwWrite, NULL ) ;
...全文
276 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
strong12345 2016-09-20
  • 打赏
  • 举报
回复
原来...来有这个API可用 感谢大神了!!
FASM_FASM 2016-09-20
  • 打赏
  • 举报
回复
没那末麻烦吧?!

AllocConsole();//分配一个新的控制台资源

HANDLE hOutputHandle=GetStdHandle(STD_OUTPUT_HANDLE);//获得控制台输出句柄 

DWORD nRet=0;
WriteConsole(hOutputHandle,L"Debug String....",lstrlenW(L"Debug String...."),&nRet,NULL);
 
FreeConsole(); //释放控制台资源

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧