社区
界面
帖子详情
如何将win32 console application 程序放到win32 application中运行
ypf_1227
2009-05-20 10:07:08
我现在做了一段程序,最后一步是要实现用户见面,之前从来没用过MFC之类的东西,我就希望像在win32 application的hello world里生成的那么个界面,然后在那里面敲命令行用来执行程序,也就是说把dos那界面换成windows的就OK
这个应该怎么弄?
...全文
108
5
打赏
收藏
如何将win32 console application 程序放到win32 application中运行
我现在做了一段程序,最后一步是要实现用户见面,之前从来没用过MFC之类的东西,我就希望像在win32 application的hello world里生成的那么个界面,然后在那里面敲命令行用来执行程序,也就是说把dos那界面换成windows的就OK 这个应该怎么弄?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
leither
2009-05-20
打赏
举报
回复
这需要对控制台进行输入输出重定向.
然后,把输入字符作为命令行参数,创建CMD.EXE进程。
用输出重定向读取CMD.EXE执行程序的结果.
以下的代码重载了CEdit类,并响应WM_KEYDOWN消息,粗略里完成命令输入并执行功能 ,楼主可以自行增加其它代码部分。
void CMyEdit::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if (nChar != VK_RETURN)
return;
int nLineCount = GetLineCount();
ZeroMemory(m_szCmdLine,255);
GetLine(nLineCount-1,m_szCmdLine,255);
BOOL bRet = false;
STARTUPINFO si = {0};
PROCESS_INFORMATION pi = {0};
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = TRUE;
sa.lpSecurityDescriptor = NULL;
HANDLE hRead,hWrite;
if (!CreatePipe(&hRead,&hWrite,&sa,0))
return;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWrite;
si.hStdOutput = hWrite;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW ;
char szContent[256] = {0};
DWORD dwNumRead = 0;
CString strConsole = _T("");
TCHAR szShellCmd[_MAX_PATH];
if (!GetEnvironmentVariable(_T("ComSpec"),szShellCmd,_MAX_PATH))
return;
_tcscat(szShellCmd,_T(" /A /c "));
_tcscat(szShellCmd,(LPCTSTR)m_szCmdLine);
if (!SetStdHandle(STD_OUTPUT_HANDLE,si.hStdOutput))
return;
bRet = CreateProcess (NULL,
szShellCmd,
NULL,
NULL,
TRUE,
NULL,
NULL,
NULL,
&si,
&pi );
CloseHandle(hWrite);
if (bRet)
{
while (true)//WaitForSingleObject(pi.hProcess, 0)==WAIT_TIMEOUT)*/ //等待控制台进程关闭
{
ZeroMemory(szContent,256);
if (ReadFile(hRead,(void *)szContent,255,&dwNumRead,NULL) == NULL)
break;
strConsole+=szContent;
SetWindowText(strConsole);
Delay(50);
}
CloseHandle (pi.hProcess);
CloseHandle (pi.hThread);
}
CEdit::OnKeyDown(nChar, nRepCnt, nFlags);
}
hurryboylqs
2009-05-20
打赏
举报
回复
先学习下Windows程序设计基础
WaistCoat18
2009-05-20
打赏
举报
回复
[Quote=引用楼主 ypf_1227 的帖子:]
我现在做了一段程序,最后一步是要实现用户见面,之前从来没用过MFC之类的东西,我就希望像在win32 application的hello world里生成的那么个界面,
就然后在那里面敲命令行用来执行程序
,也是说把dos那界面换成windows的就OK
这个应该怎么弄?
[/Quote]
还是不是很清楚。
ypf_1227
2009-05-20
打赏
举报
回复
我做了一个简单的DBMS 实现了一些最基本的功能 现在想加个界面在这里面
WaistCoat18
2009-05-20
打赏
举报
回复
没弄懂你做什么.
Win32
Application
和
Win32
Console
Application
1.
Win32
Application
和
Win32
Console
Application
的区别
win32
应用
程序
是有窗体的(当然也可以没有),有Windows消息循环机制的。而
win32
控制台应用
程序
只是在控制台下
运行
的
程序
,类似以前dos的
程序
。
Win32
Application
和
Win32
Console
Application
都是工作在32位Windows环境的
程序
。 其
中
Win32
Application
就是普通的常见的窗口应用
程序
,当然有的界面做得比较个性化,比如圆形的
如何隐藏
win32
控制台
程序
的
console
窗口
如下设置
#pragma comment( linker, "/subsystem:/ "windows/ " /entry:/ "mainCRTStartup/ " " ) // 设置入口地址
这样就ok了
大家都知道,当编写一个
win32
console
application
时,当
运行
此类
程序
的时候
默认情况下会有一个类似DOS窗口的
console
窗口,但是有的时候我们只想在
程序
VC++
中
新建
Win32
Application
和
Win32
Console
Application
有什么区别?
Win32
application
是基于WINDOWS平台的32位开发环境开发应用
程序
,SDK
程序
。
Win32
Console
application
是基于DOS开发平台开发应用
程序
,不能使用与图形有关的函数,控制台
程序
。 EXE文件本身有区别:在文件头里(PE头)有一个标记表明该文件是
Application
还是
Console
OS在创建对应的进程时,如果是Conso
Win32
Application
、
Win32
Console
Application
、MFC工程项目
Win32
Application
和
Win32
Console
Application
都是工作在32位Windows环境的
程序
。
Win32
Application
是标准 windows
程序
,完全拥有windows的特性,也即我们常说的窗口应用
程序
!它通过GUI(Graphics User Interface图形用户接口)可以把窗口界面做得比较个性化,比如圆形的、不规则形状的等等,另外,我
在VC 6.0里
Win32
Application
和
Win32
console
Application
的区别
在VC 6.0里
Win32
Application
和
Win32
console
Application
的区别 1、基本定位区别
Win32
Application
和
Win32
Console
Application
都是工作在32位Windows环境的
程序
。其
中
,
Win32
Application
是标准 windows
程序
,完全拥有windows的特性,也即我们常说的
界面
15,976
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章