如何解析 ShellExecute 函数中的 tshark 参数

How to parse tshark arguments in ShellExecute function

我想通过 ShellExecute 从 C++ 脚本调用 tshark.exe。有什么方法可以解析应用程序的 cmd 参数吗? 例如像这样指定输出文件

tshark -w output.pcap

这是代码

#include <Windows.h>
#include <shellapi.h>

int main()
{
    ShellExecute(NULL, "open", "tshark.exe", NULL, "C:\Program Files\Wireshark", SW_SHOWDEFAULT);
    return 0;
}

ShellExecute() 的第 4 个参数将命令行参数传递给新进程,例如:

ShellExecute(NULL, "open", "tshark.exe", "-w output.pcap", "C:\Program Files\Wireshark", SW_SHOWDEFAULT);

不过,你真的应该使用 CreatProcess() 来代替(ShellExecute() 无论如何都会调用它):

STARTUPINFO si = {};
PROCESS_INFORMATION pi = {};

si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWDEFAULT;

char cmd[] = "tshark.exe -w output.pcap";
if (CreateProcessA(NULL, cmd, NULL, NULL, FALSE, 0, NULL, "C:\Program Files\Wireshark", &si, &pi))
{
    CloseHandle(pi.hThread);
    CloseHandle(pi.hProcess);
}