📄 portready.c
字号:
g_hwndStatus=CreateStatusWindow(WS_CHILD|WS_VISIBLE,c_szWelcome,g_hWnd,IDS_STATUS);
SendMessage(g_hwndStatus,SB_SETPARTS,(WPARAM) 4,(LPARAM) sbParts);
SendMessage(g_hwndStatus,SB_SETTEXT,(WPARAM)1,(LPARAM)"Ready");
SendMessage(g_hwndStatus,SB_SETTEXT,(WPARAM)2,(LPARAM)"活动线程:0");
SendMessage(g_hwndStatus,SB_SETTEXT,(WPARAM)3,(LPARAM)"开放端口:0");
g_hwndToolTip = CreateWindowEx(0, TOOLTIPS_CLASS, (LPSTR) NULL, TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, g_hWnd, (HMENU) NULL, g_hInst, NULL);
ti.cbSize = sizeof(TOOLINFO);
ti.uFlags = TTF_IDISHWND;
ti.hwnd = g_hWnd;
ti.hinst = 0;
ti.lpszText = LPSTR_TEXTCALLBACK;
for(i=IDIP_STARTIP; i<=IDC_MAIL; i++)
{
ti.uId = (UINT) GetDlgItem(g_hWnd,i);
SendMessage(g_hwndToolTip, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti);
}
g_hHook = SetWindowsHookEx(WH_MOUSE, MouseProc,(HINSTANCE) NULL, GetCurrentThreadId());
hImageList= ImageList_Create(16,16, ILC_COLOR8, 1, 1);
for(i=300;i<312;i++)
{
hIcon=LoadIcon(g_hInst, MAKEINTRESOURCE(i));
if(i==300)
SetClassLong(g_hWnd,GCL_HICON,(LONG)hIcon);
ImageList_AddIcon(hImageList,hIcon);
DeleteObject(hIcon);
}
g_hwndListView = GetDlgItem(g_hWnd,IDL_RESULT);
ListView_SetExtendedListViewStyle(g_hwndListView,LVS_EX_GRIDLINES|LVS_EX_SUBITEMIMAGES);
ListView_SetImageList(g_hwndListView, hImageList, LVSIL_SMALL);
lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM ;
lvc.cx = 150;
lvc.iSubItem = 0;
lvc.pszText="地址";
ListView_InsertColumn(g_hwndListView, 0, &lvc);
lvc.cx = 75;
lvc.iSubItem = 1;
lvc.pszText="端口";
ListView_InsertColumn(g_hwndListView, 1, &lvc);
lvc.cx = 280;
lvc.iSubItem = 2;
lvc.pszText="标识";
ListView_InsertColumn(g_hwndListView, 2, &lvc);
SendDlgItemMessage(g_hWnd,IDE_STARTPORT,EM_SETLIMITTEXT,(WPARAM) 5,0);
SendDlgItemMessage(g_hWnd,IDE_ENDPORT,EM_SETLIMITTEXT,(WPARAM) 5,0);
SendDlgItemMessage(g_hWnd,IDE_PORTLIST,EM_SETLIMITTEXT,(WPARAM) 600,0);
SendDlgItemMessage(g_hWnd,IDE_THREAD,EM_SETLIMITTEXT,(WPARAM) 3,0);
SendDlgItemMessage(g_hWnd,IDE_TIMEOUT,EM_SETLIMITTEXT,(WPARAM) 2,0);
SendDlgItemMessage(g_hWnd,IDC_USELIST,BM_SETCHECK,1,0);
SetWindowLong(GetDlgItem(g_hWnd,IDC_HOME), GWL_USERDATA, (LONG)SetWindowLong(GetDlgItem(g_hWnd,IDC_HOME), GWL_WNDPROC, (LONG)HyperLinkProc));
SetWindowLong(GetDlgItem(g_hWnd,IDC_MAIL), GWL_USERDATA, (LONG)SetWindowLong(GetDlgItem(g_hWnd,IDC_MAIL), GWL_WNDPROC, (LONG)HyperLinkProc));
if(fpFile=fopen("PortReady.ini","r"))
{
fgets(strTemp,sizeof(strTemp),fpFile);
if(p=strchr(strTemp,'='))
{
p++;
for(i=0;i<4;i++)
{
byteIP[i]=atoi(p);
for(;*p;)
if(*(p++)=='.')
break;
}
if(byteIP[0]||byteIP[1]||byteIP[2]||byteIP[3])
SendDlgItemMessage(g_hWnd,IDIP_STARTIP,IPM_SETADDRESS,0,(LPARAM) MAKEIPADDRESS(byteIP[0],byteIP[1],byteIP[2],byteIP[3]));
}
fgets(strTemp,sizeof(strTemp),fpFile);
if(p=strchr(strTemp,'='))
{
p++;
for(i=0;i<4;i++)
{
byteIP[i]=atoi(p);
for(;*p;)
if(*(p++)=='.')
break;
}
if(byteIP[0]||byteIP[1]||byteIP[2]||byteIP[3])
SendDlgItemMessage(g_hWnd,IDIP_ENDIP,IPM_SETADDRESS,0,(LPARAM) MAKEIPADDRESS(byteIP[0],byteIP[1],byteIP[2],byteIP[3]));
}
fgets(strTemp,sizeof(strTemp),fpFile);
if(p=strchr(strTemp,'='))
{
p++;
if(atoi(p))
SetDlgItemInt(g_hWnd,IDE_STARTPORT,atoi(p),0);
for(;*p;)
if(*(p++)=='>')
break;
if(atoi(p))
SetDlgItemInt(g_hWnd,IDE_ENDPORT,atoi(p),0);
}
fgets(strTemp,sizeof(strTemp),fpFile);
if(p=strchr(strTemp,'='))
{
p++;
SetDlgItemInt(g_hWnd,IDE_THREAD,atoi(p),0);
}
fgets(strTemp,sizeof(strTemp),fpFile);
if(p=strchr(strTemp,'='))
{
p++;
SetDlgItemInt(g_hWnd,IDE_TIMEOUT,atoi(p),0);
}
fgets(strTemp,sizeof(strTemp),fpFile);
if(p=strchr(strTemp,'='))
{
p++;
if(*p=='Y'||*p=='y')
CheckMenuItem(g_hMenu,IDC_GETBANNER,MF_CHECKED);
}
fgets(strTemp,sizeof(strTemp),fpFile);
if(p=strchr(strTemp,'='))
{
p++;
if((*p=='N'||*p=='n'))
{
CheckMenuItem(g_hMenu,IDC_KEEPHISTORY,MF_UNCHECKED);
}
}
fgets(strTemp,sizeof(strTemp),fpFile);
if(p=strchr(strTemp,'='))
{
p++;
SendDlgItemMessage(g_hWnd,IDC_USERANGE,BM_SETCHECK,*p=='Y'||*p=='y',0);
}
fgets(strTemp,sizeof(strTemp),fpFile);
if(p=strchr(strTemp,'='))
{
p++;
if( (*p=='N'||*p=='n') && SendDlgItemMessage(g_hWnd,IDC_USERANGE,BM_GETCHECK,0,0) )
SendDlgItemMessage(g_hWnd,IDC_USELIST,BM_SETCHECK,0,0);
}
fgets(strTemp,sizeof(strTemp),fpFile);
if(p=strchr(strTemp,'='))
{
p++;
if(*p=='Y'||*p=='y')
isNoAsk=TRUE;
}
fgets(strTemp,sizeof(strTemp),fpFile);
p=strrchr(strTemp,'\n');
if(p)
*p=0;
if(p=strchr(strTemp,'='))
{
p++;
SetDlgItemText(g_hWnd,IDE_PORTLIST,p);
}
fclose(fpFile);
}
if(GetMenuState(g_hMenu,IDC_KEEPHISTORY,MF_BYCOMMAND) & MF_CHECKED)
LoadResult("PortList.txt");
}
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
void WINAPI On_Command(WPARAM wParam)
{
char *pTemp;
OPENFILENAME ofn;
switch (LOWORD(wParam))
{
case IDIP_STARTIP:
if((HIWORD(wParam))==EN_CHANGE)
{
if(SendDlgItemMessage(g_hWnd,IDIP_STARTIP,IPM_ISBLANK,0,0))
SendDlgItemMessage(g_hWnd,IDIP_ENDIP,IPM_CLEARADDRESS,0,0);
else
{
SendDlgItemMessage(g_hWnd,IDIP_STARTIP,IPM_GETADDRESS,0,(LPARAM) &dwStartIP);
byteIP[0]=(BYTE)FIRST_IPADDRESS(dwStartIP);
byteIP[1]=(BYTE)SECOND_IPADDRESS(dwStartIP);
byteIP[2]=(BYTE)THIRD_IPADDRESS(dwStartIP);
byteIP[3]=(BYTE)FOURTH_IPADDRESS(dwStartIP);
SendDlgItemMessage(g_hWnd,IDIP_ENDIP,IPM_SETADDRESS,0,(LPARAM) MAKEIPADDRESS(byteIP[0],(byteIP[1]||byteIP[2]||byteIP[3])?byteIP[1]:255,(byteIP[2]||byteIP[3])?byteIP[2]:255,(byteIP[3]==0||byteIP[3]==1)?255:byteIP[3]));
}
}
break;
case IDE_STARTPORT:
case IDE_ENDPORT:
if((HIWORD(wParam))==EN_CHANGE)
{
i=GetDlgItemInt(g_hWnd,LOWORD(wParam),NULL,FALSE);
if(i>65535)
SetDlgItemInt(g_hWnd,LOWORD(wParam),65535,0);
else if( i && (LOWORD(wParam)==IDE_STARTPORT) )
SetDlgItemInt(g_hWnd,IDE_ENDPORT,i,0);
}
break;
case IDE_PORTLIST:
if((HIWORD(wParam))==EN_CHANGE)
{
pTemp=NULL;
GetDlgItemText(g_hWnd,IDE_PORTLIST,strTemp,sizeof(strTemp));
for(p=strTemp;*p;)
{
if((*p<48 ||*p>57) && (*p!=',') && (*p!=';') && (*p!=' ') && (*p!='.'))
for(pTemp=p;*pTemp;pTemp++)
*pTemp=*(pTemp+1);
else
p++;
}
if(pTemp)
SetDlgItemText(g_hWnd,IDE_PORTLIST,strTemp);
}
break;
case IDE_THREAD:
case IDE_TIMEOUT:
if( ((HIWORD(wParam))==EN_CHANGE) && (GetDlgItemInt(g_hWnd,LOWORD(wParam),NULL,FALSE) > (LOWORD(wParam)==IDE_THREAD ? (UINT)300 : (UINT)20) ) )
SetDlgItemInt(g_hWnd,LOWORD(wParam),LOWORD(wParam)==IDE_THREAD ? 300 : 20,FALSE);
break;
case IDC_USERANGE:
case IDC_USELIST:
if(SendDlgItemMessage(g_hWnd,LOWORD(wParam),BM_GETCHECK,0,0))
{
SendDlgItemMessage(g_hWnd,LOWORD(wParam),BM_SETCHECK,0,0);
if(!SendDlgItemMessage(g_hWnd,(LOWORD(wParam)==IDC_USELIST)?IDC_USERANGE:IDC_USELIST,BM_GETCHECK,0,0))
SendDlgItemMessage(g_hWnd,(LOWORD(wParam)==IDC_USELIST)?IDC_USERANGE:IDC_USELIST,BM_SETCHECK,1,0);
}
else
SendDlgItemMessage(g_hWnd,LOWORD(wParam),BM_SETCHECK,1,0);
break;
case IDC_GETBANNER:
case IDC_KEEPHISTORY:
if(CheckMenuItem(g_hMenu,LOWORD(wParam),MF_CHECKED)==MF_CHECKED)
CheckMenuItem(g_hMenu,LOWORD(wParam),MF_UNCHECKED);
TrackPopupMenu(g_hMenu,0,ptCur.x,ptCur.y,0,g_hWnd,NULL);
break;
case IDC_SCAN:
CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)StartScan,0,0,&dwThreadID);
break;
case IDC_STOP:
isStopForce = TRUE;
break;
case IDC_LOAD:
case IDC_SAVE:
ZeroMemory(&ofn,sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hInstance = g_hInst;
ofn.hwndOwner = g_hWnd;
ofn.lpstrFile = "PortList.txt";
ofn.nMaxFile = 256;
ofn.lpstrFilter = "文本文件\0*.txt\0所有文件\0*.*\0";
ofn.lpstrDefExt = "txt";
if(LOWORD(wParam)==IDC_LOAD)
{
ofn.lpstrTitle = "导入结果文件";
ofn.Flags = 527372|OFN_FILEMUSTEXIST;
if(GetOpenFileName(&ofn))
SendMessage(g_hwndStatus,SB_SETTEXT,(WPARAM)0,LoadResult(ofn.lpstrFile) ? (LPARAM)"文件导入成功" : (LPARAM)"文件导入失败");
}
else
{
ofn.lpstrTitle = (ListView_GetSelectedCount(g_hwndListView)) ? "将所选结果另存为" : "将全部结果另存为";
ofn.Flags = 527372|OFN_OVERWRITEPROMPT;
if(GetSaveFileName(&ofn))
SendMessage(g_hwndStatus,SB_SETTEXT,(WPARAM)0,(SaveResult(ofn.lpstrFile,ListView_GetSelectedCount(g_hwndListView))) ? (LPARAM)"文件保存成功" : (LPARAM)"文件保存失败");
}
break;
case IDC_DEL:
if(ListView_GetSelectedCount(g_hwndListView))
{
for(i=0;i<nItemCount;)
{
if(ListView_GetItemState(g_hwndListView,i,LVIS_SELECTED))
{
ListView_DeleteItem(g_hwndListView,i);
nItemCount--;
nScannedPort=i;
}
else
i++;
}
ListView_SetItemState(g_hwndListView,nScannedPort-((nScannedPort==i)?1:0),LVIS_SELECTED,LVIS_SELECTED);
ListView_EnsureVisible(g_hwndListView,nScannedPort-((nScannedPort==i)?1:0),TRUE);
}
else
{
if( isNoAsk || (HIBYTE(GetKeyState(VK_CONTROL))) || (MessageBox(g_hWnd,"确实要清除全部扫描结果吗?","确认清除",MB_OKCANCEL|MB_ICONQUESTION)==IDOK) )
{
ListView_DeleteAllItems(g_hwndListView);
nItemCount=0;
}
}
sprintf(strTemp,"开放端口:%d",nItemCount);
SendMessage(g_hwndStatus,SB_SETTEXT,(WPARAM)3,(LPARAM)strTemp);
break;
case IDC_SELECTALL:
for(i=0;i<nItemCount;i++)
{
ListView_SetItemState(g_hwndListView,i,LVIS_SELECTED,LVIS_SELECTED);
if(isUseResultIP)
ListView_SetItemState(g_hwndListView,i,INDEXTOSTATEIMAGEMASK(2),LVIS_STATEIMAGEMASK);
}
break;
case IDC_SELECTINVERSE:
for(i=0;i<nItemCount;i++)
{
if(ListView_GetItemState(g_hwndListView,i,LVIS_SELECTED))
{
ListView_SetItemState(g_hwndListView,i,0,LVIS_SELECTED);
if(isUseResultIP)
ListView_SetItemState(g_hwndListView,i,INDEXTOSTATEIMAGEMASK(1),LVIS_STATEIMAGEMASK);
}
else
{
ListView_SetItemState(g_hwndListView,i,LVIS_SELECTED,LVIS_SELECTED);
if(isUseResultIP)
ListView_SetItemState(g_hwndListView,i,INDEXTOSTATEIMAGEMASK(2),LVIS_STATEIMAGEMASK);
}
}
break;
case IDC_CUT:
case IDC_COPY:
if(OpenClipboard(g_hWnd))
{
EmptyClipboard();
if(p=GlobalAlloc(GMEM_DDESHARE,ListView_GetSelectedCount(g_hwndListView)*18))
{
GlobalLock(p);
*p='\0';
for(i=0;i<nItemCount;i++)
{
if(ListView_GetItemState(g_hwndListView,i,LVIS_SELECTED))
{
ListView_GetItemText(g_hwndListView,i,0,strTemp,sizeof(strTemp));
strcat(p,strTemp);
strcat(p,"\r\n");
}
}
if(pTemp=strrchr(p,'\r'))
*pTemp='\0';
GlobalUnlock(p);
if(SetClipboardData(CF_TEXT, p))
{
CloseClipboard();
if(LOWORD(wParam)==IDC_CUT)
{
SendMessage(g_hWnd,WM_COMMAND,IDC_DEL,0);
SendMessage(g_hwndStatus,SB_SETTEXT,(WPARAM)0,(LPARAM)"已将选定地址剪切到剪贴板");
}
else
SendMessage(g_hwndStatus,SB_SETTEXT,(WPARAM)0,(LPARAM)"已将选定地址复制到剪贴板");
break;
}
}
}
SendMessage(g_hwndStatus,SB_SETTEXT,(WPARAM)0,(LPARAM)"无法复制到剪贴板");
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -