ShellExecuteEx函数的作用

Posted 道亦无名

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ShellExecuteEx函数的作用相关的知识,希望对你有一定的参考价值。

函数如下:

WINSHELLAPI BOOL WINAPI ShellExecuteEx(
  LPSHELLEXECUTEINFO lpExecInfo 
);

参数:lpExecInfo
指向 SHELLEXECUTEINFO 结构的长指针,该结构包含和接收有关正在执行的应用程序的信息。
结构体的内部成员如下:

typedef struct _SHELLEXECUTEINFOW

    DWORD cbSize;               // in, required, sizeof of this structure
    ULONG fMask;                // in, SEE_MASK_XXX values
    HWND hwnd;                  // in, optional
    LPCWSTR  lpVerb;            // in, optional when unspecified the default verb is choosen
    LPCWSTR  lpFile;            // in, either this value or lpIDList must be specified
    LPCWSTR  lpParameters;      // in, optional
    LPCWSTR  lpDirectory;       // in, optional
    int nShow;                  // in, required
    HINSTANCE hInstApp;         // out when SEE_MASK_NOCLOSEPROCESS is specified
    void *lpIDList;             // in, valid when SEE_MASK_IDLIST is specified, PCIDLIST_ABSOLUTE, for use with SEE_MASK_IDLIST & SEE_MASK_INVOKEIDLIST
    LPCWSTR  lpClass;           // in, valid when SEE_MASK_CLASSNAME is specified
    HKEY hkeyClass;             // in, valid when SEE_MASK_CLASSKEY is specified
    DWORD dwHotKey;             // in, valid when SEE_MASK_HOTKEY is specified
    union                       
                               
        HANDLE hIcon;           // not used
#if (NTDDI_VERSION >= NTDDI_WIN2K)
        HANDLE hMonitor;        // in, valid when SEE_MASK_HMONITOR specified
#endif // (NTDDI_VERSION >= NTDDI_WIN2K)
     DUMMYUNIONNAME;           
    HANDLE hProcess;            // out, valid when SEE_MASK_NOCLOSEPROCESS specified
 SHELLEXECUTEINFOW, *LPSHELLEXECUTEINFOW;

我这边做了一个历程可以参考一下,代码如下:

#include <stdio.h>
#include <WINDOWS.H>
#include <tchar.h>
#include "shellapi.h"
#pragma  comment(lib,"shell32.lib")
int main()

	SHELLEXECUTEINFO ShellInfo;

	memset(&ShellInfo, 0, sizeof(ShellInfo));
	ShellInfo.cbSize = sizeof(ShellInfo);
	
	ShellInfo.lpVerb = _T("open");
	ShellInfo.lpFile = _T("https://blog.csdn.net/u011046042");
	ShellInfo.nShow = SW_SHOWNORMAL;
	ShellInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
	ShellExecuteEx(&ShellInfo);
	WaitForSingleObject(ShellInfo.hProcess, INFINITE);



编译运行如下:


最后可以打开对应的网页。

以上是关于ShellExecuteEx函数的作用的主要内容,如果未能解决你的问题,请参考以下文章

Windows函数 ShellExecuteEx

用ShellExecuteEx函数执行一个vc写的exe,vc程序的返回函数是return(n)

VC++分别使用WinExecCreateProcessShellExecute和ShellExecuteEx来启动程序(附源码)

ShellExecuteEx 并等待文件实际打开

为啥 ShellExecuteEx 不返回进程句柄?

ShellExecuteEx() 启动的进程在终止时不会将焦点返回到父窗口