这几天一直在做QT5.2+wireshark之间的通讯时用过pipe进行的,wireshark本身是作为pipe服务端的,QT端只要对wireshark的pipe进行连接就可以了,但是QT对pipe没有进行专门的封装,所以我们需要使用Windows API进行连接,QT使用Windows API时,需要加头文件,
#include <windows.h>
并在工程文件中加
LIBS += -lgdi32这样就可以在QT中使用Windows API了,连接wireshark的pipe使用下面的代码:
void frmMain::on_openwshButton_clicked()
{
//HANDLE hPipe;
ShellExecute(0,L"open",
L"D:\\Program Files\\Wireshark\\Wireshark.exe",
L"-i \\\\.\\pipe\\wireshark0 -k",NULL,SW_SHOWNORMAL);
hPipe = CreateNamedPipe(
L"\\\\.\\pipe\\wireshark0",
PIPE_ACCESS_OUTBOUND,