C++ 中的 shellExecute() 函数
这个小型编程教程将讨论 C++ 中的 ShellExecute() 库函数。 该库函数主要用于通过C++程序打开或执行任何文件(例如脚本文件)。
C++ 中的 ShellExecute() 函数
ShellExecute()
是C++标准库中提供的库函数,用于从C++程序中打开或运行任何可执行文件。 您无需关心打开所需文件的程序; 您只需给出需要打开的文件的路径或名称。
它类似于用鼠标单击图标的 Windows 操作,然后将其打开。 这用于使用 C++ 编程自动执行此操作。
ShellExecute()
如此受欢迎的主要原因之一是几乎任何东西都可以使用此 API 调用来运行。
如果提供的文件不可执行,ShellExecute API 将在注册表中搜索适当的程序来启动给定文件。 例如,如果您提供扩展名为 .txt 的文件名,它可能会启动记事本并加载该文件。
该函数的签名是:
HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd);
我们看一下参数的详细信息:
- hwnd:保存对父窗口的引用的句柄
-
lpOperation:它是需要对文件执行的操作的名称。 以下是可以使用的操作列表:
- open 或 NULL - 函数打开 lpFile 文件。 该文件可以是文档文件或可执行文件。 我们还可以指定要打开的文件夹名称。
- print - 如果 lpFile 指定的文件是文档文件,则该函数将其发送到打印机进行打印。
- explore - 如果 lpFile 指定的文件是文件夹的名称,则该函数将探索该文件夹。
- lpFile:这是文件、文件夹或可执行文件的名称。
- lpParameters:这用于提供任何附加的命令行参数。
-
lpDirectory:用于指定默认目录的路径。
- nShowCmd 它告诉如何打开函数中指定的文件。 它的值可以是以下任意值:
- SW_HIDE - 隐藏当前应用程序窗口后显示新的应用程序窗口。
- W_MAXIMIZE - 以最大化形式显示指定窗口。
- SW_MINIMIZE - 以最小化形式显示指定窗口并显示下一级窗口。
- SW_SHOW - 它以默认大小和位置激活指定窗口
- SW_SHOWMAXIMIZED - 它首先激活窗口并以最大化形式显示它。
- SW_SHOWMINIMIZED - 它首先激活窗口并以最小化形式显示它。
- SW_SHOWNORMAL - 启用并显示窗口。 如果窗口最小化或最大化,Windows 会将窗口返回到其原始大小和位置。 当第一次显示窗口时,应用程序必须提供此标志。
- 如果 lpFile 是指定的文档文件,则 nShowCmd 值应设置为 0。
成功时,ShellExecute() 返回一个大于 31 的值; 否则,其返回值可以是:
- 0:如果操作系统不提供内存或资源。
- ERROR_FILE_NOT_FOUND – 在该位置找不到指定的文件。
- ERROR_PATH_NOT_FOUND – 指定的路径错误或未找到。
- ERROR_BAD_FORMAT – 提供了无效的 .exe 文件。
还可能有许多其他错误代码,但我们已经讨论了一些常见错误。
让我们看一下 ShellExecute()
函数的编码示例:
#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
int main()
{
ShellExecute(NULL, "open", "MyTextFile.txt", NULL, NULL, SW_SHOWMAXIMIZED);
return 0;
}
代码运行后,MyTextFile 将在记事本程序中打开。 同样,我们也可以提供一个将在浏览器中打开的 URL,如下所示:
#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
int main()
{
char webUrl[100] = "www.google.com";
ShellExecute(NULL, "open", webUrl, NULL, NULL, SW_SHOWNORMAL);
return 0;
}
使用ShellExecute()函数有很多优点和缺点,它们是:
使用 ShellExecute() 函数的优点
此 API 调用可以使用标准 Windows 设置打开、打印或浏览文件或文件夹。 您也可以更改这些默认值。
并非所有参数都必须填写; 其中一些可以为 NULL(即,易于使用)。
使用 ShellExecute() 函数的缺点
16 位软件无法通过 ShellExecute 运行。 复杂性与 WinExec 相当。
它无法指示生成的程序何时完成。
相关文章
C++ 中默认参数的重新定义
发布时间:2023/08/24 浏览次数:170 分类:C++
-
在本文中,您将学习如何处理 C++ 中默认参数错误的重新定义。 C++ 中的默认参数必须在方法或函数的声明或定义中指定,但不能同时指定,因为存在重复。
C++ 形式参数的重新定义
发布时间:2023/08/24 浏览次数:132 分类:C++
-
在本文中,我们将讨论 C++ 中形式参数的重新定义问题。首先,我们将讨论函数定义和形式参数。 接下来,我们将讨论形式参数的重新定义问题。
用 C++ 读取 PPM 文件
发布时间:2023/08/24 浏览次数:108 分类:C++
-
在本文中,我们将了解 PPM 文件并使用 C++ 读取它们。我们将首先讨论并了解 PPM 文件格式。 稍后,我们将学习用 C++ 读取 PPM 文件的分步过程。
检查 Linux 中的 C++ 编译器版本
发布时间:2023/08/24 浏览次数:60 分类:C++
-
本文是关于检查 Linux 操作系统上安装的 C++ 编译器的版本。 此外,在撰写本文时,我们还将探讨 C++ 最新版本 C++ 11 的激活过程。检查 Linux 中的 C++ 编译器版本
C++ 中结构体和类的区别
发布时间:2023/08/23 浏览次数:52 分类:C++
-
本文解释了 C++ 中结构体和类之间的区别。 本文是针对最新版本的 C++ 编写的; 旧版本中的结构和类之间存在更多限制和差异。在大多数情况下,结构与类非常相似,但差异很少。 让我们一一
C++ 中的类模板继承
发布时间:2023/08/23 浏览次数:142 分类:C++
-
本文将讨论 C++ 中最流行和最常用的方法之一(即类模板)。C++ 中模板的添加带来了一种新的编码范式,称为通用编程。 现在,这是 C++ 程序员工具包的一个重要元素,是许多标准库的基础,也