在使用ShellExecute函數打開一個應用程序后,可以使用ShellExecuteEx函數獲取該應用程序的進程ID(PID)。
以下是一個使用ShellExecuteEx函數獲取PID的示例代碼:
#include <windows.h>
#include <iostream>
int main()
{
// 定義并初始化SHELLEXECUTEINFO結構體
SHELLEXECUTEINFO sei = {0};
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask = SEE_MASK_NOCLOSEPROCESS; // 設置該標志位以獲取進程句柄
sei.lpFile = TEXT("C:\\path\\to\\your\\application.exe"); // 要打開的應用程序路徑
// 使用ShellExecuteEx函數打開應用程序
if (ShellExecuteEx(&sei))
{
// 獲取進程ID
DWORD pid = GetProcessId(sei.hProcess);
// 輸出進程ID
std::cout << "Process ID: " << pid << std::endl;
// 關閉進程句柄
CloseHandle(sei.hProcess);
}
else
{
// 打開應用程序失敗
std::cout << "Failed to open application." << std::endl;
}
return 0;
}
在上面的示例中,我們首先使用ShellExecuteEx函數打開了一個應用程序,并通過設置SEE_MASK_NOCLOSEPROCESS標志位來獲取進程句柄。然后,我們使用GetProcessId函數獲取進程ID,并輸出到控制臺。最后,我們使用CloseHandle函數關閉進程句柄。
請注意,ShellExecuteEx函數可以打開任何文件,不僅限于應用程序。如果要打開其他文件類型,只需將sei.lpFile的值設置為要打開的文件路徑即可。