如何用vc实现类似dos的窗口程序

me1001 2010-04-03 07:53:00
做一个窗口程序,可以在里面输入dos命令,并执行。就和命令提示符的功能一样。。怎么办到??

请高手指点
...全文
319 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
me1001 2010-04-04
  • 打赏
  • 举报
回复
谢谢各位
cdsnpeter 2010-04-03
  • 打赏
  • 举报
回复
管道是不同进程通信的一种方式。基于内存映射文件建立。
基本思想是,一个进程把资料送到管道中,另外一个进程可以共享去读(写)资料达到进程间通信的目的。
相关的你可以去Google或者百度搜索进程间通信。
me1001 2010-04-03
  • 打赏
  • 举报
回复
什么是 "管道Pipe"? 能不能提供一些资料、
cdsnpeter 2010-04-03
  • 打赏
  • 举报
回复
当然比较麻烦的解析字符串的动作,你自己去写吧
cdsnpeter 2010-04-03
  • 打赏
  • 举报
回复 1
void CDosConsoleView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if (nChar == VK_RETURN)
{
TCHAR szBuffer[_MAX_PATH] = {0};
GetEditCtrl().GetLine(0, szBuffer, _MAX_PATH);
CString szOutput;
My_System(szBuffer, szOutput);

GetEditCtrl().SetWindowText(szOutput);
}

CEditView::OnChar(nChar, nRepCnt, nFlags);
}

BOOL CDosConsoleView::My_System(TCHAR* cmd,CString& szOutPut)
{
SECURITY_ATTRIBUTES lsa;
STARTUPINFO si;
PROCESS_INFORMATION pi, *lppi;
HANDLE hReadPipe, hWritePipe;

lsa.nLength = sizeof(SECURITY_ATTRIBUTES);
lsa.lpSecurityDescriptor = NULL;
lsa.bInheritHandle = TRUE;

lppi = π
CWaitCursor waitCursor;

if(!CreatePipe(&hReadPipe, &hWritePipe, &lsa, 0)) {
AfxMessageBox(_T("Error on create pipe."));
return FALSE;
}

memset(&si, 0, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
si.hStdOutput = hWritePipe;

if(!CreateProcess(_T("C:\\Windows\\System32\\cmd.exe"), cmd, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi)) {
AfxMessageBox(_T("Error on create process"));
return FALSE;
}
DWORD cchReadBuffer;
CString strText;
TCHAR ph[5000];
szOutPut.Empty();

for(;;) {
cchReadBuffer = 0;
if(!PeekNamedPipe(hReadPipe, ph, 1, &cchReadBuffer, NULL, NULL)) break;

if(cchReadBuffer) {
if(!ReadFile(hReadPipe, ph, 4096, &cchReadBuffer, NULL)) break;
ph[cchReadBuffer] = 0;
szOutPut += ph;;
}
else
if(WaitForSingleObject(pi.hProcess, 0) == WAIT_OBJECT_0) break;
Sleep(500);
}

ph[cchReadBuffer] = 0;
szOutPut += ph;

CloseHandle(hReadPipe);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
CloseHandle(hWritePipe);
return TRUE;
}


这是我写的。基本思路,就是解析字符串。

然后给Dos命令行去执行。执行结果写到一个管道Pipe,完了再从管道读入,并显示到Windows程序UI上。

这个View是一个EditView。
Henry8484 2010-04-03
  • 打赏
  • 举报
回复
这个应该不难的,就是解析字符串,LZ多看看CString的用法
me1001 2010-04-03
  • 打赏
  • 举报
回复
说的详细点吧。。。谢谢
向立天 2010-04-03
  • 打赏
  • 举报
回复
执行dos命令可以用system
模仿输入窗口用richedit吧
然后通过enter执行
分析输入的str
WIN-TC免费版是一个turbo C2 WINDOWS平台开发工具,最大特点是支持中文界面,支持鼠标操作,程序段复制,WIN-TC免费版为初学c语言、对高等编程环境不熟悉的同志们非常有帮助。 WIN-TC免费版使用turbo C2为内核,提供WINDOWS平台的开发界面,因此也就支持WINDOWS平台下的功能,例如剪切、复制、粘贴和查找替换等。而且在功能上也有它的独特特色例如语法加亮、C内嵌汇编、自定义扩展库的支持等。并提供一组相关辅助工具令你在编程过程中更加游刃有余,如虎添翼。WIN-TC简繁双语版可以正常运行于98及其以上的简体及繁体WINDOWS操作系统上。 主要功能: 1、在WINDOWS下编辑TC代码,可以充分利用WINDOWS的支持剪贴版和中文的特点;   2、Include和Lib路径自动定位,告别TC设置路径的历史;   3、编译错误捕捉功能,编译时不会出现烦人的DOS窗口;   4、支持C内嵌汇编从而实现C/ASM混合编程;   5、支持C扩展库(自定义LIB库);   6、错误警告定位功能、出现编译错误时双击输出框里的出错行信息可以自动寻找到错误的行,就像DOS的TC那样;   7、支持语法加亮功能,并可以自定义设置;   8、没有目录路径限制,你甚至可以安装到带有空格的路径文件夹里;   9、允许自定义设置输入风格,能够实现VC类似的输入风格;   10、可选择是否生成ASM、MAP或OBJ文件,你甚至可以指定只生成EXE文件;   11、稳定的文件操作功能,支持历史记录列表和使用模板;   12、撤消和重复功能,并可以按照自己内存情况设置最多撤消次数(最多允许999次);   13、具有行标计数的功能,并可以设置样式。
AutoIt软件的源代码来的。可以用vc6来编译。 AutoIt 3.2.13.7.1 汉化版 AutoIt v3 是用以编写并生成具有 BASIC 语言风格的脚本程序的免费软件,它被设计用来在Windows GUI(用户界面)中进行自动操作。通过它可以组合使用模拟键击、鼠标移动和窗口/控件操作等来实现自动化任务,而这是其它语言所无法做到或尚无可靠方法实现的(比如VBScript和SendKeys)。 AutoIt 最初是为PC(个人电脑)的“批量处理”而设计,用于对数千台PC进行(同样的)配置,不过随着v3版本的到来它也很适合用于家庭自动化和编写用以完成重复性任务的脚本。 AutoIt 可以做的事: 执行 Windows 及 DOS 下的可执行文件 模拟击键动作(支持大多数的键盘布局) 模拟鼠标移动和点击动作。 对窗口进行移动、调整大小和其它操作。 直接与窗口的“控件“交互(设置/获取 文字、移动、关闭,等等) 配合剪贴板进行剪切/粘贴文本操作 对注册表进行操作 不同于 AutoIt v2,新的v3版本含有更多的标准语法——类似于VBScript和BASIC——而且现在支持更复杂的表达式、用户函数、循环以及脚本编写老手们所期待的其它所有内容。 正如前一个版本一样,AutoIt 被设计得尽可能小,并且不用依赖外部DLL文件或添加注册表项目即可独立运行。使用 Aut2Exe 这个工具即可把脚本文件编译为可独立运行的文件。 此外我们还更新了 AutoIt 的 ActiveX 和 DLL 版本——AutoItX ,与v2版本不同的是,这是个组件化的语言(COM 同一DLL文件中的标准DLL函数)。AutoItX 将使得您可以加入一些AutoIt 独有的特性到您最常用的脚本语言或程序设计语言中去!请查看 AutoItX 的帮助文档(开始 \ 所有程序 \ AutoIt v3 \ Extras \ AutoItX \ AutoItX Help File)以获得更多信息和示例。 最重要的是,AutoIt 将继续是免费的——不过如果您打算支持我们花在此工程和网站主机上的时间、费用以及所作努力的话,那么您可以到AutoIt 的 主页 上进行捐赠。 AutoIt 在线文档 http://www.autoit.net.cn/Doc/?sid=GQCCpg

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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