117.info
人生若只如初见

如何获取ShellExecute调用的exe的返回值

要获取ShellExecute调用的exe的返回值,可以使用ShellExecuteEx函数来替代ShellExecute函数,并使用PROCESS_INFORMATION结构来获取进程的句柄和ID。然后,使用WaitForSingleObject函数等待进程的结束,最后使用GetExitCodeProcess函数获取进程的返回值。

以下是示例代码:

#include 
#include 
int main()
{
SHELLEXECUTEINFO sei = { 0 };
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.lpVerb = L"open";
sei.lpFile = L"C:\\path\\to\\your.exe";
sei.lpParameters = L"parameters";
sei.nShow = SW_HIDE;
if (ShellExecuteEx(&sei))
{
WaitForSingleObject(sei.hProcess, INFINITE);
DWORD exitCode = 0;
GetExitCodeProcess(sei.hProcess, &exitCode);
// 使用exitCode来获取返回值
CloseHandle(sei.hProcess);
}
return 0;
}

在这个示例代码中,我们创建了一个SHELLEXECUTEINFO结构,并设置了需要执行的exe的路径,参数等信息。然后使用ShellExecuteEx函数来执行命令,并获取进程的句柄和ID。接着,使用WaitForSingleObject函数等待进程的结束,使用GetExitCodeProcess函数获取进程的返回值,最后关闭进程的句柄。

请注意,ShellExecuteEx函数在Windows XP及更高版本上可用,如果你的应用程序需要兼容更早的Windows版本,可以考虑使用CreateProcess函数来替代ShellExecuteEx函数。

未经允许不得转载 » 本文链接:https://www.117.info/ask/feadeAzsLBABUBVc.html

推荐文章

  • shellexecute的使用方法有哪些

    ShellExecute 是一个 Windows API 函数,用于执行一个外部程序或打开一个文件。以下是 ShellExecute 的使用方法: 打开一个文件: ShellExecute(NULL, "open", "...

  • shellexecute的用法是什么

    ShellExecute是一个Windows API函数,用于在Windows操作系统中打开文件,运行程序或打开URL。它的使用方法如下:
    ShellExecute(HWND hwnd, LPCTSTR lpOpera...

  • 关于ShellExecute函数返回值问题

    ShellExecute函数的返回值是一个HINSTANCE类型的值,用于表示执行结果。具体返回值的含义如下: 如果函数执行成功,则返回大于32的值,一般为执行的应用程序的句...

  • ShellExecute函数返回值是什么

    ShellExecute函数的返回值是一个HINSTANCE类型的值,它表示执行操作的实例句柄。如果函数执行成功,返回值为大于32的值,其中包括HINSTANCE类型的实例句柄。如果...

  • 如何使用Stretchblt获取调整位图图像大小的方法

    使用StretchBlt函数可以调整位图图像的大小。以下是使用StretchBlt函数的步骤: 创建源位图和目标位图的设备上下文句柄。 HDC hdcSrc = https://www.yisu.com/as...

  • Excel 控件中的 EMBED 函数是什么意思

    在 Excel 控件中,EMBED 函数用于将一个对象嵌入到工作表中。它可用于嵌入其他 Office 文档、PDF、图像、音频、视频等文件。
    EMBED 函数的语法如下:
    ...

  • 什么是app-ads.txt,如何在AdMob中实施

    app-ads.txt是一种用于验证应用程序和广告库存之间的关联关系的文本文件。它是Interactive Advertising Bureau(IAB)提出的一项行业标准,旨在帮助广告买家确认...

  • Argumentexception未处理..如何解决

    Argumentexception是一种异常类型,表示方法参数传递错误。要解决Argumentexception未处理的问题,可以尝试以下几种方法: 异常捕获和处理:使用try-catch语句块...