>> 4) & 0xF;
if (j <= 9) h = j + '0';
else h = j + 'A' - 10;
memset(hex, 0, sizeof(hex));
sprintf(hex, "%C", h);
lstrcat(lpOutText, hex);
j = d& 0xF;
if (j <= 9) h = j + '0';
else h = j + 'A' - 10;
sprintf(hex, "%C ", h);
lstrcat(lpOutText, hex);
}
//MessageBox(0, buf, "提示", MB_OK | MB_ICONINFORMATION);
return lstrlen(lpOutText);
}
int GetMemoCount(HWND hMemo)
{
int Result = SendMessage(hMemo, EM_GETLINECOUNT, 0, 0);
if(SendMessage(hMemo,
EM_LINELENGTH,
SendMessage(hMemo, EM_LINEINDEX, Result - 1, 0),
0) == 0)
Result--;
return Result;
}
void MemoPut(HWND hMemo, int Index, char *data)
{
SendMessage(hMemo, EM_SETSEL, 666536+Index, 666536);
SendMessage(hMemo, EM_REPLACESEL, true, (LPARAM)data);
}
LONG CALLBACK AOnData(LONG lParam) //THookData* p
{
PHookData p = NULL;
p = PHookData(lParam);
if (p)
{
char buf[255] = {0};
char data[8912*3+64] = {0};
if (p->CommState == COMM_OPEN){
sprintf(buf, "打开 COM%d \r\n", p->ComPort);
}
else if (p->CommState == COMM_CLOSE){
sprintf(buf, "关闭 COM%d \r\n", p->ComPort);
}
else if ((p->CommState == COMM_READ) || (p->CommState == COMM_WRITE))
{
if (p->CommState == COMM_READ) {
sprintf(buf, "COM%d, Read: %d(Bytes) ", p->ComPort, p->DataSize);
ReadTotal += p->DataSize;
SetRichEditFontColor(0xFF0000);
}
else {
sprintf(buf, "COM%u, Write: %d(Bytes) ", p->ComPort, p->DataSize);
WriteTotal += p->DataSize;
SetRichEditFontColor(0x008000);
}
// MessageBox(0, p->Data, "提示", MB_OK | MB_ICONINFORMATION);
// sprintf(data, "%s", buf);
lstrcat(data, buf);
FormatHex(hHex, p->Data, p->DataSize, data);
lstrcat(data, "\r\n");
MemoPut(hMemo, GetMemoCount(hMemo)+1, data);
//更新状态
GetDlgItemText(GetParent(hMemo), IDC_PID, buf, sizeof(buf));