我正在使用IPC来共享内存。
我需要使用IPC打开另一个程序,但我想知道如何传递参数。
下面是我的IPC类的执行函数。
int execute(std::string exePath, std::string exeName, int console = 1)
{
SHELLEXECUTEINFOA p_info;
ZeroMemory(&p_info, sizeof(SHELLEXECUTEINFOA)); //초기화
p_info.cbSize = sizeof(SHELLEXECUTEINFOA);
p_info.lpFile = exeName.c_str(); // 파일 이름
p_info.lpDirectory = exePath.c_str(); //파일 위치
p_info.nShow = console; //콘솔 show
p_info.fMask = SEE_MASK_NOCLOSEPROCESS;
return ShellExecuteEx(&p_info);
};
答案 0 :(得分:2)
使用lpParameters
的{{1}}成员传递参数。
其他一些评论:
SHELLEXECUTEINFO
,因此对函数调用执行相同操作并使用SHELLEXECUTEINFOA
是合适的。ShellExecuteExA
:ZeroMemory
SHELLEXECUTEINFOA p_info = { 0 };
但无法关闭进程句柄。这是一个手柄泄漏。SEE_MASK_NOCLOSEPROCESS
和ShellExecuteEx
动词来提升流程,否则调用runas
会更合适。为什么要CreateProcess
直接致电ShellExecuteEx
?