转:VC调用外部程序的方法

方法有三种:

WinExec, ShellExecute,CreateProcess

其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂。
WinExec 有两个参数,前一个指定路径,后一个指定显示方式。
ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。
CreateProcess 一共有十个参数,不过大部分都可以用NULL代替,它可以指定进程的安全属性,继承信息,类的优先级等等。如果我们要得到足够多的关于新的进程的信息,控制新的进程的细节属性,若要达到这些目的,就需要使用CreateProcess函数了。

1)ShellExecute(NULL,"open","NotePad.exe","",GetCurPath(""),SW_SHOW);

GetCurPath("")表示需要打开的程序和当前运行程序在同一目录下,即当前路径

2)STARTUPINFO   si; 
PROCESS_INFORMATION  pi; 
ZeroMemory(&si,sizeof(si)); 
si.cb = sizeof(si); 
ZeroMemory(&pi,sizeof(pi)); 
if(!CreateProcess(NULL, "

NotePad.exe

", NULL,NULL,FALSE,CREATE_NO_WINDOW,NULL,NULL,&si,&pi))

{
AfxMessageBox("打开程序失败");
}

3)WinExec("taskmgr",SW_SHOW); //调用系统任务管理器

注意事项: 

1、定义头文件

     在头文件stdafx.h中必须定义以下两个头文件:
       #include <shlobj.h> // 可替换为 windows.h
       #include <shellapi.h>

     如果定义了头文件 #include <windows.h>的话就不必定义 #include <shlobj.h>了,"windows.h" 不光是包含了"shellapi.h",它还定义了许多数据类型,如果没有这些数据类型,shellapi.h本身会出错。

2、定义路径

    C++中所表示的路径要用 " \\ "而不是平常所用的" \ ",所以以上三个函数表示路径都为:
Disk:\\Directory\\...\\File name



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值