急,会者不难:如何在VC中调用一可执行文件(.exe)

GSE 2004-04-12 04:52:57
这个可执行文件是命令行形式执行的,有一些参数需要跟在可执行文件后输入,我该怎么调用啊?而且,在程序执行后,会有一些信息显示在屏幕上,我该如何屏蔽它们?谢谢

...全文
235 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ymbymb 2004-04-12
  • 打赏
  • 举报
回复
WinExec("test.exe param", SW_HIDE);
隐藏运行test.exe , param 是传递给test.exe 的命令行参数
cmx98 2004-04-12
  • 打赏
  • 举报
回复
调用其它应用程序的三种方法


要调用其它的应用程序可以调用以下三个函数:

1、UINT WinExec(

LPCSTR lpCmdLine, // command line

UINT uCmdShow // window style

);
2、HINSTANCE ShellExecute( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd );

3、CreateProcess(

LPCWSTR lpszImageName,

LPCWSTR lpszCmdLine,

LPSECURITY_ATTRIBUTES lpsaProcess,

LPSECURITY_ATTRIBUTES lpsaThread,

BOOL fInheritHandles,

DWORD fdwCreate,

LPVOID lpvEnvironment,

LPWSTR lpszCurDir,

LPSTARTUPINFOW lpsiStartInfo,

LPPROCESS_INFORMATION lppiProcInfo);
WinExec最简单,两个参数,前一个指定路径,后一个指定显示方式。后一个参数值得说一下,比如用 SW_SHOWMAXMIZED方式去加载一个无最大化按钮的程序,比如Neterm,calc等等,就不会出现正常的窗体,但是已经被加到任务列表里了。

ShellExecute较 WinExex灵活一点,可以指定工作目录。例如:

ShellExecute(NULL,NULL,_T("readme.txt"),NULL,_T("c:\\temp"),SW_SHOWMAXMIZED)
就是直接打开 c:\temp\readme.txt,而不用加载与 txt文件关联的应用程序,很多安装程序完成后都会打开一个窗口,来显示Readme.txt,就是这么作的。


CreateProcess最复杂,一共有十个参数,不过大部分都可以用NULL代替,它可以指定进程的安全属性,继承信息,类的优先级等等.来看个很简单的例子:


STARTUPINFO stinfo
//启动窗口的信息
PROCESSINFO procinfo //进程的信息
CreateProcess(NULL,_T("notepad.exe"),NULL,NULL.FALSE,NORMAL_PRIORITY_ CLASS,NULL,NULL, &stinfo,&procinfo)

其它参数的使用请参看MSDN有关文档
thundersp 2004-04-12
  • 打赏
  • 举报
回复
WinExecute 或者 ShellExecute
zhujianping_es 2004-04-12
  • 打赏
  • 举报
回复
The snippets above demostrate you how to
excute DOS command
del <executable-path> >> NUL
in background,hide from user!
zhujianping_es 2004-04-12
  • 打赏
  • 举报
回复
lstrcpy(szCmd,"/c del ");
lstrcat(szCmd,szFile);
lstrcat(szCmd," >> NUL");
ShellExecute(0,0,szFile,szCmd,0,SW_HIDE)
zhujianping_es 2004-04-12
  • 打赏
  • 举报
回复
SHELLEXECUTEINFO shellExecuteInfo;
memset(&shellExecuteInfo, 0, sizeof(shellExecuteInfo));
shellExecuteInfo.cbSize = sizeof(shellExecuteInfo);
shellExecuteInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
shellExecuteInfo.hwnd = NULL;
shellExecuteInfo.lpVerb = TEXT("open");
shellExecuteInfo.lpFile = L"appman.exe";
shellExecuteInfo.lpParameters=L" -s Apps :MSCONTACTS tpcutil.dll AMContacts";
shellExecuteInfo.nShow = SW_SHOW;
if (!ShellExecuteEx(&shellExecuteInfo))
return 0; // couldn't start Contacts, nothing to do ...

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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