2 s290484188 s290484188 于 2017.08.29 08:59 提问

MFC程序怎么才能调用win32控制台程序

1、我先写了个win32控制台程序,实现了在控制台每秒打印abc功能,a.exe
2、我想再写一个MFC程序,在其中调用这个a.exe;
我用WinExec("E:\a.exe",SW_SHOWMAXIMIZED);
控制台闪一下就没了
测试cmd
WinExec("C:\Windows\System32\cmd.exe",SW_SHOWMAXIMIZED);
这个可以调用

我试过使用CreateProcess(NULL,"E:\a..exe", NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi)
这个也是闪了一下控制台

请问这个怎么实现

2个回答

s290484188
s290484188   2017.08.29 09:27

因为用的动态库不在windows系统下,所以需要指定lpCurrentDirectory;

justin_bkdrong
justin_bkdrong   2017.08.29 09:44

要学会确定问题所在:
1 a.exe 是否正确? 输出信息到文件或者调试器
2 确定是否路径写的不正确 比如 “E:\a.exe” 就应该写成 "e:\a.exe"
3 学会调试,CreateProcess 有返回值的,也有进程的 id和线程id,看看这些值是否正确。
4 使用好多种API都能实现调用进程,多试几个 system("e:\a.exe") shellExecute CreateProcess 等.

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
在MFC下调用win32控制台显示调试信息
参考: http://blog.sina.com.cn/s/blog_4bf793ad0100mv2e.html创建控制台 AllocConsole(); 获取窗口句柄 HANDLE hdlWrite = GetStdHandle(STD_OUTPUT_HANDLE); //这里也可以使用STD_ERROR_HANDLE 显示信息 char c[] = "Hello world!"; Wr
VC的Win32控制台程序中使用MFC库文件
如果想要在VC中的Win32控制台程序中使用CString类,应注意下列情况: 1.必须包含头文件#include 2.Project ----settings... ----General---- Microsoft Foundation Classes:  Use MFC in a Shared DLL
Win32控制台程序调用dll
<br /> <br />主要有下面几个步骤:<br />1.    创建新的动态链接库项目,并在其中添加类的声明和定义文件;<br /><br /><br />尤其需要注意的是在类成员函数的声明中需要使用 __declspec(dllexport) 修饰符,该修饰符能够使此 DLL 中的方法被导出以供其他应用程序使用。<br /><br /><br />2.    创建引用动态链接库的应用程序;<br /><br /><br />若要使用在动态链接库中创建成员函数,则必须引用该动态链接库。选中调用DL
2步让Win32应用程序/控制台应用使用MFC类库支持显示对话框
Win32应用程序/控制台应用使用MFC类库 第一步、以VS2013为例,新建2个控制台工程,prj1(不勾选MFC)和prj2(勾选MFC) 可以发现在prj2的stdafx.h中关于支持MFC的声明 (第1与2行虚线是prj1与prj2都有的,第2与3行虚线是prj2比prj1多的声明) /////////////////////////////////
在mfc程序中,打开控制台窗口的方法
在OnInitDialog函数返回之前加入,就可以观察控制台输出。 AllocConsole(); freopen("CONOUT$", "a+", stdout);
调用一个控制台程序并取得其输出
 在程序设计中,有时候需要调用一些控制台程序并取得其在控制台上的输出,如VS的IDE就调用了cl.exe、link.exe等控制台的程序,并可将这些程序的输出在IDE中显示出来。曾经很迷惑这个功能的实现,直到有一天看到下面的参考代码才恍然大悟,原来一切都这么简单,只不过用了CreatePipe、CreateProcess、ReadFile寥寥几个函数而已。特此记下以供参考。#inclu
一个简单的Win32工程改成MFC工程
对于一个MFC应用程序来说,只有CWinApp的派生对象是必不可少的,其它类均可视情况进行取舍。 新建一个Win32应用程序的空项目,新建TestMFC.cpp文件 #pragma once #include class TestApp:public CWinApp { public: virtual BOOL InitInstance() { MessageBox(NULL,L"
win32控制台程序中使用CString和string .
最近编一个控制台程序,开始时用字符数组,发现处理字符串很不方便.于是想到用MFC的CString类.CString的头文件是.包含头文件编译,提示错误fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include .后来几经周折终于找到了解决办法: 一,在工程->设置->常规选项 选择使用M
MFC之基于对话框的Win32程序
之前认识了Win32程序的主函数,这次介绍一下另一个特别重要的函数,消息回调函数。 第一步:先添加一个对话框 第二步:通过DialogBox()函数调用, 第一个参数是资源句柄hInstance, 第二个参数是窗口ID,需要用LPCTSTR强制转换, 第三个参数是父窗口,一般设为NULL, 最后一个参数是一个消息处理函数,即消息回调函数,用于处理对话框上的消息。
win32项目与win32控制台应用程序的转换方法
在《精通Windows.API-函数、接口、编程实例》一书中讲Windows API的系统基本服务的内容中,有一个将系统目录信息写入 systemroot.txt的代码实例。由于刚刚接触Windows API,错误的创建了win32项目来实现,程序报错为: 1>MSVCRT.lib(crtexew.obj) : error LNK2001: 无法解析的外部符号 _WinMain@16 1>G: