【问题标题】:How to parse tshark arguments in ShellExecute function如何在 ShellExecute 函数中解析 tshark 参数
【发布时间】:2019-12-12 17:12:50
【问题描述】:

我想通过 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++ winapi wireshark tshark


【解决方案1】:

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

【讨论】:

  • 哦,谢谢。我之前尝试过,但由于某种原因它不起作用。不知道为什么。现在一切正常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 2020-09-14
  • 1970-01-01
  • 2020-08-19
  • 1970-01-01
  • 2011-11-24
相关资源
最近更新 更多