社区
进程/线程/DLL
帖子详情
我有两个可执行程序,一个是mfc的一个是dos的,如何融合到一起?
bugzhao
2006-03-30 08:57:13
我写了个程序,基于MFC框架,调用了另一个dos程序,带管道的。
现在程序运行没问题,我想把那个dos程序嵌入到我的主程序中,怎么实现呢?
...全文
231
14
打赏
收藏
我有两个可执行程序,一个是mfc的一个是dos的,如何融合到一起?
我写了个程序,基于MFC框架,调用了另一个dos程序,带管道的。 现在程序运行没问题,我想把那个dos程序嵌入到我的主程序中,怎么实现呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
绿色环保-菜青虫
2006-04-03
打赏
举报
回复
呵呵~~~加到DOS头里面运行!DOS下的时候运行前面的,Win下时运行Win的!
whiteclouds
2006-04-03
打赏
举报
回复
楼上各位说的都是在win程序里调用dos程序,而楼主的意思是把dos程序的可执行代码放在win程序里,这是不可能的,dos的代码里会有如中断等操作,这些在win里是非法的,这是不可能完成的任务。记得在很早以前曾有一种技术,可以制作双平台的程序,某个程序既可以在dos里运行,也可以在win里运行,不过那是win3.2时代的事了,不知现在是否还可以这样做。
bugzhao
2006-04-03
打赏
举报
回复
我采取了很笨的办法,
首先我把那个dos文件设置为系统、隐藏属性,
然后把mfc的可执行程序和那个dos程序一起压缩,用winrar制作自解压文件,并使用了脚本命令:
Title=demo
Text
{
XXX版权信息等
}
Path=demotest
Overwrite=1
Silent=1
Shortcut=D,demo.exe
Setup=demo.exe
然后使用工具修改了那个自解压rar文件的图标,
这样用户双击这个可执行文件时,dos程序默认在后台解压了,同时实现了mfc调用那个dos
mfc程序退出之前,一个winexec指令删除那个dos文件:)
一切无影无踪啊,
虽然没有什么技术含金量,但也算基本达到功能了
bugzhao
2006-04-03
打赏
举报
回复
可能是我表述不清楚吧。。。
我现在已经采取了一种偷懒的办法实现了
MSDN3000
2006-04-02
打赏
举报
回复
ShellExecute可以在你的程序中运行另外的一个程序:
HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpVerb,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
示例如下 :
#include <shlobj.h>
#include <shlwapi.h>
main()
{
LPMALLOC pMalloc;
LPITEMIDLIST pidlWinFiles = NULL;
LPITEMIDLIST pidlItems = NULL;
IShellFolder *psfWinFiles = NULL;
IShellFolder *psfDeskTop = NULL;
LPENUMIDLIST ppenum = NULL;
STRRET strDispName;
TCHAR pszParseName[MAX_PATH];
ULONG celtFetched;
SHELLEXECUTEINFO ShExecInfo;
HRESULT hr;
BOOL fBitmap = FALSE;
hr = SHGetMalloc(&pMalloc);
hr = SHGetFolderLocation(NULL, CSIDL_WINDOWS, NULL, NULL, &pidlWinFiles);
hr = SHGetDesktopFolder(&psfDeskTop);
hr = psfDeskTop->BindToObject(pidlWinFiles, NULL, IID_IShellFolder, (LPVOID *) &psfWinFiles);
hr = psfDeskTop->Release();
hr = psfWinFiles->EnumObjects(NULL,SHCONTF_FOLDERS | SHCONTF_NONFOLDERS, &ppenum);
while( hr = ppenum->Next(1,&pidlItems, &celtFetched) == S_OK && (celtFetched) == 1)
{
psfWinFiles->GetDisplayNameOf(pidlItems, SHGDN_FORPARSING, &strDispName);
StrRetToBuf(&strDispName, pidlItems, pszParseName, MAX_PATH);
pMalloc->Free(pidlItems);
if(StrCmpI(PathFindExtension(pszParseName), TEXT( ".bmp")) == 0)
{
fBitmap = TRUE;
break;
}
}
ppenum->Release();
if(fBitmap)
{
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = NULL;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = pszParseName;
ShExecInfo.lpParameters = NULL;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_MAXIMIZE;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
}
pMalloc->Free(pidlWinFiles);
psfWinFiles->Release();
return 0;
}
oyljerry
2006-03-31
打赏
举报
回复
直接用ShellExecute等来调用dos程序
syy64
2006-03-31
打赏
举报
回复
WINEXEC函数。
bugzhao
2006-03-31
打赏
举报
回复
各位老大们,不要一句winexec啊,详细说说:)
另外我问的问题不是调用那个dos程序,而是怎样把那个调用的dos程序融合到我的exe文件里面去!
当然用winrar做个脚本这个办法就算啦
amdk_7
2006-03-31
打赏
举报
回复
WinExec
whiteclouds
2006-03-31
打赏
举报
回复
不可能
bugzhao
2006-03-31
打赏
举报
回复
各位,那个dos程序我只有exe的,没有源代码
powerwin
2006-03-31
打赏
举报
回复
把dos程序编译出来的obj连接到mfc中, 虽然我没做过, 但以前公司里的dos下的函数库就是这么干的.
Atomictry
2006-03-31
打赏
举报
回复
你都提到管道了,在你的MFC程序中用管道把你的dos重定向。
bugzhao
2006-03-30
打赏
举报
回复
大家帮帮忙啊
十年
MFC
经历认识的Microsoft技术(zz)
自从2005年3月8日下午16时“十年
MFC
经历认识的Microsoft技术”以帖子的方式发表于CSDN论坛后,引起了许多网友得好评,使得笔者诚惶诚恐,考虑到该贴过长(人气指数为5000),因此转移到Blog上,许多网友对此帖的评语只好省略,在此鄙人谢过了!为感谢网友的支持,本人希望今后能发出新的帖子以回报网友对我的鼓励,再一次谢谢!
十年
MFC
经历认识的Microsoft技术
自从2005年3月8日下午16时“十年
MFC
经历认识的Microsoft技术”以帖子的方式发表于CSDN论坛后,引起了许多网友得好评,使得笔者诚惶诚恐,考虑到该贴过长(人气指数为5000),因此转移到Blog上,许多网友对此帖的评语只好省略,在此鄙人谢过了!为感谢网友的支持,本人希望今后能发出新的帖子以回报网友对我的鼓励,再一次谢谢! 初识
MFC
我最初知道
MFC
大概是在199
用Windows API 编写串口通讯
程序
最近在做一个PC机上和ARM机串口通讯的
程序
。 实际上,我并没有在VC上编写过串口
程序
。记得大一下学期的课程实践上倒是在
DOS
环境下做个简单的串口通讯,可是就是因为太简单了,而且是
DOS
那种独占式的进程,所以现在要搬到VC和
MFC
界面应用
程序
环境中,难度还是有的,我一时没有头绪。 我首先当然想到用ActiveX控件了。曾听说过Microsoft曾做过一个ActiveX控
如何屏蔽控制台应用
程序
的窗口?
众所周知,控制台应用
程序
一般都会显示一个控制台窗口(虚拟
DOS
窗口),但很多时候控制台
程序
的
执行
逻辑根本不需要与用户进行交互,所以显示这个难看的窗口纯属多余,那么如何将它屏蔽掉呢?下面我向大家介绍一种方法。 操作系统装载应用
程序
后,做完初始化工作就转到
程序
的入口点
执行
。
程序
的默认入口点实际上是由连接
程序
设置的,不同的连接器选择的入口函数也不尽相同。在VC下,连接器对控制台
程序
设置的入口函数是 m
在自己的图形界面里调用命令行
程序
本人做的是一个图形界面的编译器,美其名曰IDE吧。 做到最后一步的时候,发现如何解释中间代码成了一个大问题!我有如下几种方案: 1,在IDE中调用解释
程序
,对中间代码进行解释
执行
。 2,通过自己的代码来模拟一个命令行。 3,让解释
程序
在后台运行,将输入输出重定向到自己的某个控件(如
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章