MFC中调用控制台程序如何进行自动输入并执行

MFC中调用控制台程序如何进行自动输入并执行,第1张

以ping命令为例。

CStringA str = "ping sohu.com"

str += " -t"

system(str)

以上是vs2008环境。在vc6下如果CStringA不能通过编译请使用CString代替。

你把ping sohu.com改成你的长文件路径就可以了啊。

CStringA str = "c:\\mypass\\MypassCCCCC.exe"

// str += " -t"

system(str)

另外,要确认你的控制台程序中有接收参数的功能。如果没有,光靠简单的调用api函数是达不到你要求的,即使用其他函数也一样。这样的话,你可以考虑编写一个.bat批处理文件。

system( "X:\\xxxx\\xx.bat")

这下应该够明白了吧

给你一个控制台版本的浏览目录范例程序,把main中的代码复制过去就行了。

#include <wtypes.h>

#include <atlbase.h>

#include <shlobj.h>

#include <iostream>

using namespace std

//显示文件夹浏览对话框

//用shell提供的SHBrowseForFolder,需要一个指向BROWSEINFO结构的指针

/* BROWSEINFO结构

HWND hwndOwner,指定对话框的父窗口的句柄

LPCITEMIDLIST pidlRoot,指定打开浏览的根目录,若为NULL,表示桌面

LPSTR pszDisplayName,指定一个缓冲区,接收用户选择的目录的显示名称

LPCSTR lpszTitle,树形视图上方显示的文字

UINT ulFlags,指定属性

BFFCALLBACK Lpfn,指定回调函数,发生某些事件时,指定的函数被调用,允许程序进一步定制对话框的行为

LPARAM lParam,若指定回调函数,参数值传递给回调函数

int iImage,代表用户选择的文件夹对象的图标在系统图标列表中的索引 */

int main()

{

BROWSEINFO bi

::ZeroMemory(&bi,sizeof(bi)) //将bi结构清零

char szSelPath[MAX_PATH] //被选择文件夹对象名称的缓冲区

bi.pszDisplayName=szSelPath

LPITEMIDLIST pNetHoodIDL

::SHGetSpecialFolderLocation(NULL,CSIDL_HISTORY,&pNetHoodIDL) //根文件夹为历史文件夹

bi.pidlRoot=pNetHoodIDL

bi.lpsztitle="Luoguohui " //提示字符串

bi.ulFlags=BIF_BROWSEINCLUDEFILES|//允许选择文件对象

BIF_EDITBOX|//显示编辑框

BIF_STATUSTEXT| //显示状态文本

BIF_VALIDATE //校验编辑框中的输入

LPITEMIDLIST pidlSel=::SHBrowseForFolder(&bi) //打开文件夹浏览对话框

if(pidlSel!=NULL)

{

cout<<"Selected:"<<szSelPath<<endl

CComPtr<IMalloc>pMalloc

::SHGetMalloc(&pMalloc)

pMalloc->Free(pidlSel) //释放资源

}

return 0

}

写了个例子。

假设你有这么一个程序

#include <stdio.h>

int main() {

int a, b

scanf("%d%d", &a, &b)

printf("%d", a+b)

return 0

}

编译成add.exe

然后你看附件里的代码是怎么调用的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7748697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存