Ага. Ты решил вести запись в лог-файл...
1. Функция zapiz()Мусор выдает, потомучто ты вызовом
WriteFile(hFile,cTextBuffer,40,&dwBytes,NULL);
всякий раз записываешь в файл 40 байт. Вне зависимости от объема полезной информации. То есть, недостающий до 40 байт кусок заполняется мусором.
Нужно заменить 40 на strlen(cTextBuffer)
Смысл последней строки в этой функции для меня не ясен. Имхо, ее можно смело убирать.
А вообще, можно было использовать стандартную сишную функцию fprintf
2.
Функция sniff()Во-первых, она недозаписывает TTL и перевод на новую строку.
Дело в том, что вторым параметром в вызове функции itoa должен быть указатель на строку, в которой результат будет храниться. То есть вместо "" можно подставить объявленные уже
src,
dest или
ds, поскольку эти переменные в дальнейшем функцией не используются.
Во-вторых, хорошо бы эту функцию сделать членом класса основной формы. Хотя можно этого и не делать.
Функция
kbhit() отлавливает нажатие волшебной клавиши "Any key" при работе консольного приложения. Чтобы реализовать то же самое в Win32 GUI приложении, нужно идти по-другому.
Во-первых, убрать этот цикл, чтобы функция формировала только одну строку.
По нажатию кнопки на форме необходимо запустить что-то типа убранного ранее цикла, но чтобы его выполнение можно было остановить, а программа не висла.
Самый быстрый способ - добавить на форму компонент таймер, установить частоту его обновления как больше нравится. В обработчик таймера этого засунуть вызов функции, а нажатием кнопки этот таймер запускать/останавливать.
Второй способ более правильный, на мой взгляд, но более трудоемкий. Связанный с отловом сообщений Windows.
Если интересует именно второй способ - You wellcome!