Windows WinAPI外壳API与基本API和CRT函数有何不同?

Windows WinAPI外壳API与基本API和CRT函数有何不同?,windows,api,winapi,process,Windows,Api,Winapi,Process,当时我正在阅读Windows process API,留下了三个问题: 基本API和shell API之间有什么区别?我读到shell API包装基本API,例如ShellExecute()和ShellExecuteEx()包装CreateProcess(),但未能理解其区别 基本API和Shell API与CRT函数(C运行时)有何不同。同样,exec()和spawn()CRT函数包装基本API的CreateProcess() 我知道,通过编译并链接正确的头文件,我可以直接从代码中使用基本AP

当时我正在阅读Windows process API,留下了三个问题:

  • 基本API和shell API之间有什么区别?我读到shell API包装基本API,例如ShellExecute()和ShellExecuteEx()包装CreateProcess(),但未能理解其区别

  • 基本API和Shell API与CRT函数(C运行时)有何不同。同样,exec()和spawn()CRT函数包装基本API的CreateProcess()

  • 我知道,通过编译并链接正确的头文件,我可以直接从代码中使用基本API和CRT函数。如何使用Shell API

  • 1)基本API和shell API之间有什么区别?

    他们做不同的事情。ShellExecute系列的操作方式与shell相同,即与windows资源管理器相同。它不仅仅是CreateProcess的包装器。例如,如果您将word文档的路径传递给ShellExecute,ShellExecute将在注册表中查找以找出打开word文档的正确方法,然后执行此操作

    ShellExecute还可以执行您在Windows上下文菜单上看到的其他“动词”,如编辑、打印等

    2)基本API和外壳API与CRT函数有何不同

    CRT功能在Windows上实现,以便与C标准兼容。它们是CreateProcess的包装器,但它们存在的原因是为了兼容,而不是提供额外的功能

    3)如何使用Shell API

    要使用shell API,只需包含头文件并链接正确的库,就像使用任何其他API一样

    例如,ShellExecute:

    正如您在页面底部看到的,它告诉您要包括哪个文件以及要链接到哪个库

    要求

    支持的最低客户端:Windows XP[仅限桌面应用程序]

    支持的最低服务器:Windows 2000 server[仅限桌面应用程序]

    标题:Shellapi.h

    库:Shell32.lib

    DLL:Shell32.DLL(版本3.51或更高版本)

    Unicode和ANSI名称:ShellExecuteW(Unicode)和ShellExecuteA (ANSI)

    shell(又名Windows资源管理器)增加了一层额外的功能。它管理文件关联,当您要求它“运行”文档时,它知道应该启动什么EXE。如果您传递一个.html文件的名称,那么ShellExecuteEx()可以确定需要启动浏览器。它还支持动词,即可以对文档执行的不同操作。例如,除了“打开”之外,默认动词、“打印”和“编辑”动词也很常见

    CreateProcess()中缺少此功能,它只知道如何启动可执行文件。仍然有很多选项,请查看MSDN文档中的安全属性和创建标志选项

    CRT函数中缺少很多这样的哨声,它们在任何操作系统上都可以工作,因此除了指定可执行文件名和命令行参数之外,您无法做更多的事情