📄 view.h
字号:
DWORD dwHigh=0;
SetFilePointer(hFile,0,(PLONG)&dwHigh,FILE_BEGIN);
/*::PostMessage(g_hRecvWnd,WM_RESETSIZE,pPacket->ph.dwAllSize/1500+1,0);*/
/*hFile=CreateFile(szFileName,
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);*/
}
FindClose(hFind);
}
TCHAR szMessage[1024];
wsprintf(szMessage,"已经接收%d字节,剩余:%d字节",pPacket->ph.dwCurrentPos,pPacket->ph.dwAllSize-pPacket->ph.dwCurrentPos);
dlg.SetLineText(2,szMessage);
dlg.UpdateProgress ( pPacket->ph.dwCurrentPos+pPacket->ph.dwCurrentSize,pPacket->ph.dwAllSize );
DWORD dwHigh=0;
DWORD dwWritten;
SetFilePointer(hFile,pPacket->ph.dwCurrentPos,(PLONG)&dwHigh,FILE_BEGIN);
WriteFile(hFile,pPacket->data,pPacket->ph.dwCurrentSize,&dwWritten,0);
if (pPacket->ph.bEnd) {
break;
}
}
if(hFile)CloseHandle(hFile);
dlg.EndDialog();
::CoUninitialize();
g_bThreadStart=FALSE;
::MessageBox(NULL,"数据接收完毕","提示",MB_OK);
return 0;
}
LRESULT OnRecv(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
GetDlgItemText(IDC_FILENAME,m_szFileName,sizeof(m_szFileName));
if (_tcslen(m_szFileName)==NULL) {
OnBrowse(wNotifyCode,IDC_BROWSE,GetDlgItem(IDC_BROWSE),bHandled);
}
DWORD dwThread;
InitRecv(m_szFileName,1,0);
/* SetDlgItemText(IDC_EDIT1,"");
if (!g_bThreadStart) {
g_bThreadStart=TRUE;
CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)lpListenProc,m_szFileName,0,&dwThread);
}
else
MessageBox("侦听线程已经启动","提示",MB_OK);*/
return true;
}
// LRESULT OnNMRclickListview(int /*idCtrl*/, LPNMHDR pNMHDR, BOOL& /*bHandled*/);
};
class CSendPacketDlg : public CDialogImpl<CSendPacketDlg>
{
public:
enum { IDD = IDD_SENDPACKETDLG };
CBrush m_brBack;
CUpDownCtrl m_spinMiniSeconds;
BEGIN_MSG_MAP(CSendPacketDlg)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_CTLCOLORDLG, OnCtlColorDlg)
MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnCtlColorDlg)
MESSAGE_HANDLER(WM_SHOWWINDOW,OnShowWindow)
COMMAND_HANDLER(IDC_BROWSE, BN_CLICKED,OnBrowse)
COMMAND_HANDLER(IDC_SEND, BN_CLICKED,OnSend)
REFLECT_NOTIFICATIONS()
END_MSG_MAP()
TCHAR m_szFileName[MAX_PATH];
LRESULT OnSend(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
GetDlgItemText(IDC_FILENAME,m_szFileName,sizeof(m_szFileName));
if (_tcslen(m_szFileName)==NULL) {
OnBrowse(wNotifyCode,IDC_BROWSE,GetDlgItem(IDC_BROWSE),bHandled);
}
InitSend(m_szFileName,0,1);
// PACKET Buffer;
// Buffer.ph.dwFlag=0x12345678;
// //_tcscpy(Buffer.ph.szFileName,m_szFileName);
// Buffer.ph.dwCurrentPos=0;
//
// WIN32_FIND_DATA FindFileData;
// HANDLE hFind;
//
// Buffer.ph.bEnd=FALSE;
// hFind = FindFirstFile(m_szFileName, &FindFileData);
// if (hFind != INVALID_HANDLE_VALUE)
// {
// Buffer.ph.dwAllSize=FindFileData.nFileSizeLow;
//
// }
// FindClose(hFind);
// Buffer.ph.dwCurrentPos=0;
// DWORD dwLeftSize=Buffer.ph.dwAllSize;
// Buffer.ph.dwID=0;
// Buffer.ph.dwCurrentSize=dwLeftSize>(1500-sizeof(PACKETHEADER))?1500-sizeof(PACKETHEADER):dwLeftSize;
// HANDLE hFile=CreateFile(m_szFileName,
// GENERIC_READ,
// FILE_SHARE_READ,
// NULL,
// OPEN_EXISTING,
// FILE_ATTRIBUTE_NORMAL,
// NULL);
// int i=0;
// CoInitialize(NULL);
// CSHProgressWnd dlg;
// dlg.SetTitle ( _T("正在发送") );
// dlg.SetAnimation ( IDR_FILECOPY );
// dlg.SetCancelMessage ( _T("取消") );
// dlg.SetLineText ( 1, _T("正在发送...") );
// dlg.SetCalculateTime ( true );
// dlg.SetAllowMinimize ( true );
// dlg.SetCalculateTime ( true );
// dlg.SetShowProgressBar ( true );
//
// dlg.ShowModeless(g_hWndTabView);
// int nDelay=GetDlgItemInt(IDC_EDIT1);
// struct pcap_pkthdr *header;
// u_char *pkt_data;
// int res;
// //CXAviPlayDlg* ap=new CXAviPlayDlg(g_hWndTabView,dwLeftSize,"正在发送");
// while (dwLeftSize!=0) {
//
// i++;
// if (i>Buffer.ph.dwAllSize/(1500-sizeof(PACKETHEADER))) {
// Buffer.ph.bEnd=TRUE;
// }
// DWORD dwlen;
// ReadFile(hFile,Buffer.data,Buffer.ph.dwCurrentSize,&dwlen,NULL);
//
// if(!dwlen)break;
// if(dlg.HasUserCanceled()){
// dlg.SetCancelMessage("请等待当前的操作正在被清理");
//
// break;
// }
// Buffer.ph.dwCurrentBlockCheckSum=checksum(Buffer.data,dwlen);
// Buffer.ph.dwCurrentSize=dwlen;
//
//retry:
// pcap_sendpacket(fp, (u_char *)&Buffer, sizeof Buffer);
// Sleep(1);
// while((res = pcap_next_ex( fp, &header,(const BYTE**) &pkt_data)) >= 0)
// {
//
// if(res == 0)
// {
//
// goto retry;
//
// }
// if ( header->len==46&&pkt_data[45]==1)break;
// continue;;
//
//
// }
// Buffer.ph.dwID++;
// dwLeftSize-=dwlen;
// Buffer.ph.dwCurrentSize=dwLeftSize>(1500-sizeof(PACKETHEADER))?1500-sizeof(PACKETHEADER):dwLeftSize;
//
// Buffer.ph.dwCurrentPos+=dwlen;
// TCHAR szMessage[1024];
// wsprintf(szMessage,"已经发送%d字节,剩余:%d字节",Buffer.ph.dwCurrentPos,Buffer.ph.dwAllSize-Buffer.ph.dwCurrentPos);
// dlg.SetLineText(2,szMessage);
// dlg.UpdateProgress ( Buffer.ph.dwCurrentPos,Buffer.ph.dwAllSize );
//
// //Sleep(nDelay);
// }
// CoUninitialize();
// dlg.EndDialog();
// CloseHandle(hFile);
/*::MessageBox(NULL,"数据发送完毕","提示",MB_OK);*/
return true;
}
LRESULT OnBrowse(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
OPENFILENAME ofn; // common dialog box structure
TCHAR szFile[260]; // buffer for file name
// Initialize OPENFILENAME
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = m_hWnd;
ofn.lpstrFile = szFile;
//
// Set lpstrFile[0] to '\0' so that GetOpenFileName does not
// use the contents of szFile to initialize itself.
//
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = _T("All Files\0*.*\0");
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
// Display the Open dialog box.
if (GetOpenFileName(&ofn)==TRUE) {
_tcscpy(m_szFileName,(TCHAR*)ofn.lpstrFile);
SetDlgItemText(IDC_FILENAME,m_szFileName);
}
return 0;
}
LRESULT OnShowWindow(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
return 0;
}
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
m_brBack.CreateSolidBrush(RGB(240,241,245));
*m_szFileName=NULL;
m_spinMiniSeconds = GetDlgItem(IDC_SPIN1);
m_spinMiniSeconds.SetRange(1, 30);
m_spinMiniSeconds.SetPos(15);
m_spinMiniSeconds.SetBuddy(GetDlgItem(IDC_EDIT1));
SetDlgItemInt(IDC_EDIT1,15);
return 0;
}
LRESULT OnCtlColorDlg(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
return (LRESULT) (HBRUSH) m_brBack;
}
};
class CTabView : public CTabPanelImpl<CTabView>
{
public:
DECLARE_WND_CLASS(_T("WTL_CollapsiblePanel"))
typedef CTabPanelImpl<CTabView> parentClass;
CImageList m_Images;
CSendPacketDlg m_view1;
CRecvPacketDlg m_view2;
BOOL PreTranslateMessage(MSG* pMsg)
{
pMsg;
return FALSE;
}
BEGIN_MSG_MAP(CTabPanelImpl)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_DESTROY, OnDestory)
MESSAGE_HANDLER(WM_SET_PANEL_ACTIVE, OnSetActive)
CHAIN_MSG_MAP( parentClass )
END_MSG_MAP()
LRESULT OnDestory(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
/* pcap_close(fp);*/
return 0;
}
LRESULT OnSetActive(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
SetCurSel((int )lParam);
return 0;
}
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
g_hWndTabView=m_hWnd;
LRESULT lRes = parentClass::OnCreate(uMsg, wParam, lParam, bHandled);
m_Images.CreateFromImage(MAKEINTRESOURCE(IDB_HEADERS), 32, 0, RGB(0,128,128), IMAGE_BITMAP, LR_CREATEDIBSECTION);
SetImageList(m_Images, LVSIL_NORMAL);
m_view1.Create(m_hWnd);
m_view2.Create(m_hWnd);
//SetExtendedPanelStyle(CPS_EX_FLATSTYLE);
//SetExtendedPanelStyle(CPS_EX_SELHIGHLIGHT | CPS_EX_NOSCROLLBAR);
SetExpandBitmaps(IDI_EXPAND, IDI_COLLAPSE);
InsertItem(m_view1, _T("发送以太包"),0);
InsertItem(m_view2, _T("接收以太包"));
SetItemExpanded(0, FALSE);
//pcap_if_t *alldevs;
//pcap_if_t *d;
//char errbuf[PCAP_ERRBUF_SIZE+1];
//if (pcap_findalldevs_ex("rpcap://", NULL, &alldevs, errbuf) == -1)
//{
// MessageBox("WinPCap程序加载失败,请重新运行安装程序安装WinPCap","提示",MB_OK|MB_ICONSTOP);
// return 0;
//}
//for(d=alldevs;d;d=d->next)
//{
// GetNetcardName(d);
//}
//if ( (fp= pcap_open(g_netchardsource/*"\\Device\\NPF_{8065DF3F-B15B-4EE1-BFEF-0A8893E9DABE}"*/, // name of the device
// 256, // portion of the packet to capture (only the first 100 bytes)
// PCAP_OPENFLAG_PROMISCUOUS, // promiscuous mode
// 1000, // read timeout
// NULL, // authentication on the remote machine
// errbuf // error buffer
// ) ) == NULL)
//{
// ATLTRACE("\nUnable to open the adapter. %s is not supported by WinPcap\n", g_netchardsource);
// return NULL;
//}
return lRes;
}
//void GetNetcardName(pcap_if_t *d)
//{
// pcap_addr_t *a;
// for(a=d->addresses;a;a=a->next) {
// //printf("\tAddress Family: #%d\n",a->addr->sa_family);
// switch(a->addr->sa_family)
// {
// case AF_INET:
// /*printf("\tAddress Family Name: AF_INET\n");*/
// if (a->addr){
// _tcscpy(g_netchardsource,d->name);
// }
// break;
// default:
// break;
// }
// }
//}
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -