首页 > 解决方案 > 如何在 ShellExecute 函数中解析 tshark 参数

问题描述

我想通过 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;
}

标签: c++winapiwiresharktshark

解决方案


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

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);
}

推荐阅读