2024年6月2日发(作者:)
Delphi WinExec ShellExec 用法介绍(转)
2009-10-20 10:40
在Windows程序设计中WinAPI也为我们提供了类似的函数,它们就是WinExec()和
ShellExecute(),下面就来讨论一下这两个函数的用法。
1)WinExec() 函数原型:
UINT WinExec(LPCSTR lpCmdLine,UINT uCmdShow);
参数说明:(激活的意思是能接受焦点,即标题栏变成蓝色)
lpCmdLine:以0结尾的字符串,命令行参数。
uCmdShow:新的应用程序的运行方式。其取值如下:
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 激活并显示窗口,如果是最大(小)化,窗口将会还原。第一次运行程序 时
应该使用这个值
比如说,我想要用记事本打开"C:",以正常方式运行:
WinExec("notepad c:",SW_SHOWNORMAL);
如果调用成功,这个函数会返回一个不小于31的值,否则调用失败,其返回值的意义如
下:
0 系统内存或资源不足
ERROR_BAD_FORMAT .EXE文件格式无效(比如不是32位应用程序)
ERROR_FILE_NOT_FOUND 指定的文件设有找到
ERROR_PATH_NOT_FOUND 指定的路径没有找到
这个函数和system()非常类似,只能运行.EXE文件,这样在WINDOWS中有它不尽人意的
地方,比如不能用此方法通过关联的方法打开文件,例如WinExec("",SW_SHOWNA);
就不能打开此文档。
2)ShellExecute()
函数原型:
HINSTANCE ShellExecute( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR
lpParameters, LPCTSTR lpDirectory, INT nShowCmd );
参数说明:
hwnd 窗口的句柄
lpOperation 进行的操作,如"open","print","explore"分别对应"打开","打印","游览
", 也可以为空(""),此时表示进行默认的操作。
lpFile 要操作的文件。
lpParameters 如果lpFile指定的是一个可执行文件则表示参数
lpDirectory 操作进行的目录 nShowCmd 程序的运行方式,其取值见上例。
如果这个函数调用成功,将返回实例的句柄,如果不成功,返回值包含错误信息,由于类
型比较多,这里就不一一列举了,详见WinApi的帮助。
这样,上面的例子就可以改变为(假设窗口的句柄为Handle)
ShellExecute(Handle,"open","notepad","c:","",SW_SHOWNORMAL);
其实不用那么复杂,因为.TXT的关联程序就是记事本,所以只要这样就可以了
ShellExecute(Handle,"","c:","","",SW_SHOWNORMAL);


发布评论