WinExec() and ShellExecute() 的用法

在MFC里要开启外部程式有三个API可以用,Shellexecute()被运用的机率比较高,主要是它可以控制的参数也比较多。

1. Shellexecute() 函数原型

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

参数说明:

hwnd 所掌控的window handle,一般设为NULL
lpOperation 档案执行的方式,如"open","print","explore"分别对应 "开启","列印","浏览", 若不设定,则表示以预设值为主。
lpFile 所要执行的档案名称
lpParameters 指定给lpFile档案所需的参数
lpDirectory lpFile档案目录
nShowCmd 档案显示方式,可设定如下参数:
SW_HIDE 隐藏
SW_MAXIMIZE 最大化
SW_MINIMIZE 最小化,并把Z order顺序在此视窗之后(即视窗下一层)的视窗启动
SW_RESTORE 启动视窗并还原为初始化大小
SW_SHOW 以当前大小和状态启动视窗
SW_SHOWDEFAULT 以预设方式运行
SW_SHOWMAXIMIZED 启动视窗并最大化
SW_SHOWMINIMIZED 启动视窗并最小化
SW_SHOWMINNOACTIVE 最小化但不改变当前启动的视窗
SW_SHOWNA 以当前状态显示视窗但不改变当前启动的视窗
SW_SHOWNOACTIVATE 以初始化大小显示视窗但不改变当前启动的视窗
SW_SHOWNORMAL 启动并显示视窗,如果是最大(小)化,视窗将会还原。第一次运行程式 时应该使用这个值

 

范例:

开启DOS console mode,并显示目录:

                   ShellExecute(handle, NULL, "cmd.exe", "/k dir", NULL, SW_SHOW);

 

2. WinExec()

UINT WINAPI WinExec(  __in  LPCSTR lpCmdLine,  __in  UINT uCmdShow);

 lpCmdLine [in] : 所要执行的命令,若只有档名没有目录,系统将依以下顺序搜寻档案:                          1. 依开启的程式而定                          2. 目前的目录                          3. 系统目录                          4. Windows目录                          5. PATH环境变数所设定的目录 uCmdShow [in] : 档案显示方式,参数可参考ShellExecute()相同。

 

范例:

开启DOS console mode,并显示目录:

                WinExec("cmd.exe /k dir", SW_SHOW);

 

在使用上,以ShellExecute()较好用。个人在使用中有遇到,在unicode的状态下,WinExec()有字串转换的问题。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章