电脑知识
shellexecuteex(shellexecuteex怎么样)
2023-04-15 01:53

“shellexecuteex”函数:

1、定义:“shellexecuteex”函数是Windows API函数,使用以此函数可以将Windows操作系统支持的文件类型以及文件关联应用程序,进行文件处理关联操作。

2、使用形式:典型的形式如下:

BOOL ShellExecuteEx ( SHELLEXECUTEINFO *pExecInfo);

它有一个输入参数,就是指向一个SHELLEXECUTEINFO数据结构的指针。它的定义如下:

typedef struct _SHELLEXECUTEINFO { DWORD cbSize; ULONG fMask; HWND hwnd; LPCTSTR lpVerb; LPCTSTR lpFile; LPCTSTR lpParameters; LPCTSTR lpDirectory; int nShow; HINSTANCE hInstApp; LPVOID lpIDList; LPCTSTR lpClass;  HKEY hkeyClass; DWORD dwHotKey; union { HANDLE hIcon; HANDLE hMonitor; }; HANDLE hProcess;

3、解释:其中,cbSize是当前结构变量的大小。结构变量fMask描述了与函数ShellExecuteEx相关的掩码,它们用一定的位组成的多位数表示。hwnd文件的显示位置,lpVerb是一个字符串,用来指定执行该文件时的行为,lpFile是文件的完整路径名,lpParameters是文件的命令行参数,lpDirectory是文件所在的文件夹,nShow指定如何显示文件,hInstApp指向调用者的实例句柄,lpIDList指定选择文件,lpClass指定文件类型,hkeyClass指定文件的注册表,dwHotKey指定文件快捷方式,hIcon或hMonitor指定文件所用图标,hProcess指定最后运行的进程句柄。

4、参数:对于fMask参数:

(1)SEE_MASK_CLASSKEY参数表示lpClass参数被指定,并且通常指的是类的注册表项;

(2)SEE_MASK_CLASSNAME参数表示lpClass参数被指定,指的是文件类型的字符串;

(3)SEE_MASK_IDLIST参数表示lpIDList指定;

(4)SEE_MASK_INVOKEIDLIST参数表示有hkeyClass参数指定;

(5)SEE_MASK_HOTKEY参数表示有dwHotKey指定;

(6)SEE_MASK_ICON参数表示有hIcon参数指定;

(7)SEE_MASK_NO_CONSOLE参数表示有hMonitor参数指定;

(8)SEE_MASK_NOCLOSEPROCESS参数表示返回ShellExecute结构中的hProcess进程句柄;

(9)SEE_MASK_FLAG_DDEWAIT参数表示环境变量的生效路径和Windows的工作路径要被设置;

(10)SEE_MASK_DOENVSUBST参数表示定义文件名中的环境变量要被替换;

(11)SEE_MASK_FLAG_NO_UI参数表示没有用户界面出现。

5、作用:“shellexecuteex”函数主要是用于启动WINDOWS系统支持的文件类型以及文件关联应用程序,进行文件处理关联操作的,如剪贴板的数据搬运,文件的复制,移动等,也可以在Windows上执行一些文件,还可以把某种格式的文件改变为另外一种格式的文件,以及创建新的文件夹或者另存为等操作。

1. shellexecuteex函数:\t

Shellexecuteex函数是Windows API提供的一种执行指定文件或者指定命令行参数列表(命令行参数列表可以是可执行文件指定带参数,也可以是特殊的命令)的函数。它是用于替代Exec()函数的,而且还拥有其他的能力,可以执行各种类型的任务,比如调用COM组件,打开文件,显示网址等等,执行任务操作。

2. shellexecuteex函数的应用:\t

(1)调用应用程序执行任务:shellexecuteex函数用于调用其他应用程序(不限于Windows程序),执行更复杂或者更丰富的功能。比如有些报表或者公用的安装程序的调用,可以用shellexecuteex函数来实现;

(2)打开文件和浏览网页:shellexecuteex函数还可以用来打开文件,比如txt或者doc等等文件,以及打开网页和网址。可以通过shellexecuteex函数,实现从点击按钮就可以调用系统自带的浏览器浏览指定网页等操作;

3. shellexecuteex函数的优势:\t

(1)安全性和便捷性:shellexecuteex函数允许程序员在无需显式调用CreateProcess()函数的情况下,也可以调用到一些安全执行程序和指令,也就是避免显式创建新进程,还有可以选择以隐藏方式执行程序;

(2)获取调用进程实例窗口句柄:调用shellexecuteex函数可以获得调用进程的实例的窗口句柄,这样就可以更加便捷的写出任务程序;

(3)灵活选择执行模式:shellexecuteex函数还可以用来指定执行任务的模式,比如窗口执行模式调用进程实例,以及非窗口模式调用任务进程等等;

(4)调用额外功能:shellexecuteex函数不仅可以实现一般性app文件或者可执行文件的调用,而且还可以提供一些更为高级的功能,比如调用ActiveX控件和COM对象服务等。

发表评论
0评