C++中外部程序的调用,第1张

C++中外部程序的调用,第2张

可以调用的SDK函数有三个:
WinExec、ShellExecute、CreateProcess
其中,WinExec最简单,ShellExecute比WinExec灵活,CreateProcess最复杂。
WinExec有两个参数,前者指定路径,后者指定显示模式。
ShellExecute可以指定工作目录,也可以找到文件的关联,直接打开,不需要加载与文件关联的应用。ShellExecute还可以打开网页,启动相应的邮件关联,发送邮件等。
CreateProcess有十个参数,但大部分可以用NULL代替,可以指定进程的安全属性、继承信息、类优先级等等。如果我们想要获得关于新流程的足够信息并控制其详细属性,我们需要使用CreateProcess函数来实现这些目标。
具体用法如下:
WinExec
这个函数最简单,只有两个参数。原型如下:
uintWinexec(
lpcstr lpcmdline,//命令路径
UINT uCmdShow //显示MSDN。
使用方法如下:
WinExec ("notepad.exe ",SW _ show);//打开记事本
winexec(" d:\ \ program files \ \ test \ \ test . exe ",SW _ show maximized);//用化学的方式打开Test.exe(注意文件名的大小写一定要完全一致)
需要注意的是,如果用SW_SHOWMAXMIZED的方式加载一个没有按钮的程序,比如Calc (calculator)的话,范式不会出现,但是已经添加到任务列表中了。
ShellExecute
原型如下:
Hinstanceshellexecute(
hwnd hwnd,//父窗口句柄
LPCTSTR lpOperation,//操作,打开方式“编辑”、“浏览”、“打开”、“查找”、“打印”、“null”
LPCTSTR LP file,//文件名,前面加路径
LPCTSTR lpParameters,//参数
LPCTSTR lpDirectory,//默认文件夹
int nshow cmd//打开C:\Test.txt文件
shellexecute (null," Open "," http://www.google.com ",null,null,SW _ show normal);//打开网页www.google.com
shell execute(null," explore "," d: \ \ c++ ",null,null,SW _ show normal);//打开目录D: \ c++
shellexecute (null," print "," c: \ \ test.txt ",null,null,SW _ hide);//打印文件C:\Test.txt
注意:ShellExecute不支持定向输出。
createprocess
的原型如下:
bool createprocess(
lpctstr lpapplicationname,//执行程序的名称
LPTSTR lpCommandLine,//参数line
//下面两个参数描述了创建的进程和线程的安全属性。如果为空,则使用默认的安全属性
LP security _ ATTRIBUTES lpprocessattributes,//进程安全属性
LP security _ ATTRIBUTES lpThreadAttributes,//线程安全属性
BOOL bInheritHandles,//继承标志
DWORD dwCreationFlags,//创建标志
LPVOID lpEnvironment,//环境变量
lpctstr lpcurrent directory,//进程运行的初始目录
LP启动信息LP启动信息,//进程的初始目录
使用方法如下:
PROCESS _ INFORMATION pi;//启动窗口信息
startup info si;//进程
memset(&si,0,sizeof(si))的信息;
si . CB = sizeof(si);
si . wshow window = SW _ SHOW;
si . dw flags = STARTF _ USESHOWWINDOW;
bool fRet = CreateProcess(" D:\ \ putty . exe ",NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,& pi);
结果我设计了三个按钮,用这三个函数调用了三个应用,分别设置在每个按钮的ONCLICK消息中:
winexec ("taskmgr ",SW _ normal);//调用系统任务管理器
shellexecute (null," open "," c: \ readme.txt ","","",SW _ show);//打开c盘
启动信息si = {sizeof (si)}下的自述文件;
进程_信息pi;
CreateProcess(NULL," cleanmgr ",NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,& pi);//调用系统的磁盘清理程序
。编译运行后,都通过了。我的对话框终于有点用了。您可以通过点击按钮来执行一些应用程序。
考试提示:使用这三个函数也有一些注意事项:
1。定义头文件
下面两个头文件必须在头文件stdafx.h中定义:
#include //可以替换为windows . h
#include
Include,就不用定义# Include了。“windows.h”不仅包含“shellapi.h”,还定义了很多数据类型。如果没有这些数据类型,shellapi.h本身就会出错。
2。定义path
C++中指示的路径应该是“\”,而不是通常的“\”,所以上面三个函数指示的路径是:
disk: \ \ directory \ \...\文件名。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++中外部程序的调用

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情