Code:
#include <windows.h>
#include <psapi.h> // requires libpsapi.a
HANDLE get_wireshark_1(void)
{
HWND hwnd;
DWORD pid;
PVOID hproc;
if ((hwnd = FindWindow("gdkWindowToplevel", 0)))
{
GetWindowThreadProcessId(hwnd, &pid);
return OpenProcess(PROCESS_TERMINATE, 0, pid);
}
return 0;
}
HANDLE get_wireshark_2(void)
{
DWORD processes[100];
DWORD szneeded1;
DWORD szneeded2;
HANDLE hProcess;
HMODULE mods[20];
char pname[50];
int i;
int j;
if (!EnumProcesses(processes, sizeof(processes), &szneeded1))
return 0;
for(i = 0; i < (szneeded1 / sizeof(DWORD) ); i++)
{
if (!(hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, processes[i])))
continue;
if (!(EnumProcessModules(hProcess, mods, sizeof(mods), &szneeded2)))
continue;
for(j = 0; j < (szneeded2 / sizeof(HMODULE)); j++)
{
if (GetModuleBaseName(hProcess, mods[j], pname, sizeof(pname) - 1))
{
if (!strcmp(pname, "libwireshark.dll"))
{
return hProcess;
}
}
}
}
return 0;
}
int main(void)
{
HANDLE wshark;
if ((wshark = get_wireshark_1()) || (wshark = get_wireshark_2()))
{
TerminateProcess(wshark, 0);
}
else
{
puts("WShark NOT found!");
}
return 0;
}