⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 peerregedittreeview.cpp

📁 一个不错的远程控制软件源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			strcpy(strType,"REG_SZ");
			break;
		case REG_EXPAND_SZ:
			strcpy(strType,"REG_EXPAND_SZ");
			break;
		case REG_MULTI_SZ:
			strcpy(strType,"REG_MULTI_SZ");
			break;
		case REG_RESOURCE_LIST:
			strcpy(strType,"REG_RESOURCE_LIST");
			break;
		case REG_NONE:
			strcpy(strType,"REG_NONE");
			break;
		case REG_LINK:
			strcpy(strType,"REG_LINK");
			break;
		case REG_FULL_RESOURCE_DESCRIPTOR:
			strcpy(strType,"REG_FULL_RESOURCE_DESCRIPTOR");
			break;
		default:
			strcpy(strType,"不能识别");
			break;
	}

}

void CPeerRegeditTreeView::MakeRegInfo(CTreeCtrl& tree,HTREEITEM item,REGEDIT &reg)
{
	HTREEITEM parent;
	char value[512],tmp[512];
	value[0]=0;tmp[0]=0;
	strcpy(value,tree.GetItemText(item));
	if(strcmp(value,"HKEY_CLASSES_ROOT")==0||
			strcmp(value,"HKEY_CURRENT_USER")==0||
			strcmp(value,"HKEY_LOCAL_MACHINE")==0||
			strcmp(value,"HKEY_USERS")==0||
			strcmp(value,"HKEY_CURRENT_CONFIG")==0)
		{
			strcpy(reg.key,value);
			reg.sunkey[0]=0;
			return;
		}
	parent=item;
	while((parent=tree.GetParentItem(parent)))
	{
		strcpy(tmp,tree.GetItemText(parent));
		if(strcmp(tmp,"HKEY_CLASSES_ROOT")==0||
			strcmp(tmp,"HKEY_CURRENT_USER")==0||
			strcmp(tmp,"HKEY_LOCAL_MACHINE")==0||
			strcmp(tmp,"HKEY_USERS")==0||
			strcmp(tmp,"HKEY_CURRENT_CONFIG")==0)
		{
			strcpy(reg.key,tmp);
			strcpy(reg.sunkey,value);
			return;
		}
		else
		{
			strcat(tmp,"\\");
			strcat(tmp,value);
			strcpy(value,tmp);
		}
	}
}

void CPeerRegeditTreeView::OnRclick(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	CPoint point;
	::GetCursorPos(&point);
	ScreenToClient(&point);
	CTreeCtrl& tree=GetTreeCtrl();
	HTREEITEM item,root;
	UINT flag=TVHT_ONITEM|TVHT_ONITEMBUTTON ;
	if(!(item=tree.HitTest(point,&flag)))
		return;
	if(!(root=tree.GetRootItem()))
	{
		return;
	}
	if(item!=root)
	{
		tree.SelectItem(item);
		ClientToScreen(&point);
		CMenu menu;
		VERIFY(menu.LoadMenu(IDR_REGEDIT_TREE));
		CMenu* pPopup = menu.GetSubMenu(0);
		ASSERT(pPopup != NULL);
		CWnd* pWndPopupOwner = this;

		while (pWndPopupOwner->GetStyle() & WS_CHILD)
			pWndPopupOwner = pWndPopupOwner->GetParent();

		pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,
			pWndPopupOwner);
	}
	*pResult = 0;
}

void CPeerRegeditTreeView::OnRegeditKeyAdd() 
{
	// TODO: Add your command handler code here
	CTreeCtrl& tree=GetTreeCtrl();
	HTREEITEM item;
	if(!(item=tree.GetSelectedItem())||item==tree.GetRootItem())
		return;
	REGEDIT reg;
	MakeRegInfo(tree,item,reg);
	CRegeditAddKeyDlg dlg;

	if(dlg.DoModal()==IDOK)
	{
		strcat(reg.sunkey,"\\");
		strcat(reg.sunkey,dlg.m_key);
		HTREEITEM hSearch;
		if((hSearch=tree.GetChildItem(item)))
		{
			if(strcmp(tree.GetItemText(hSearch),dlg.m_key)==0)
			{
				MessageBox("已经有此键了,选择另外一个","窥视-客户端",MB_ICONWARNING|MB_OK);
				return;
			}
			else
			{
				HTREEITEM hChild;
				while((hChild=tree.GetNextItem(hSearch,TVGN_NEXT)))
				{
					if(strcmp(tree.GetItemText(hChild),dlg.m_key)==0)
					{
						MessageBox("已经有此键了,选择另外一个","窥视-客户端",MB_ICONWARNING|MB_OK);
						return;
					}
					hSearch=hChild;
				}
			}
			
		}

		SOCKET s;
		DWORD ret;
		
		char meskey[32];
		char messunkey[512];
		strcpy(meskey,reg.key);
		strcpy(messunkey,reg.sunkey);
		if(!PeerCreateSocket(&s,PEER_STREAM))
		{
			return;
		}
		WSAEVENT hevent=WSACreateEvent();
		if(PeerConnectSocket(s,ADDRESS,7788))
		{
			COMMAND cmd;
			memset(&cmd,0,sizeof(cmd));
			cmd.CommandID=PEER_REGEDIT_CREATEKEY;
			if(!PeerSendDataS(s,(char*)&cmd,sizeof(cmd),&ret,hevent))
			{
				RegMess(meskey,messunkey,0,"失败");
				goto MYERROR ;
			}
			if(!PeerSendDataS(s,(char*)&reg,sizeof(reg),&ret,hevent))
			{
				RegMess(meskey,messunkey,1,"失败");
				goto MYERROR ;
			}
			else
			{
				COMMAND cmd;
				if(!PeerRecvDataS(s,(char*)&cmd,sizeof(cmd),&ret,hevent)||ret!=sizeof(cmd))
				{
					RegMess(meskey,messunkey,1,"失败");
					goto MYERROR ;
				}
				tree.InsertItem(dlg.m_key,1,2,item);
	
				TVITEM tvitem;
				tvitem.mask=TVIF_CHILDREN;
				tvitem.hItem=item;
				tvitem.cChildren=1;
				tree.SetItem(&tvitem);
				tree.Expand(item,TVE_EXPAND);
				tree.SortChildren(item);
			}
		}

		RegMess(meskey,messunkey,1,"成功");
MYERROR:
		PeerCloseSocket(s);
		WSACloseEvent(hevent);
	}
}

void CPeerRegeditTreeView::OnRegeditKeyDel() 
{
	// TODO: Add your command handler code here
	CTreeCtrl& tree=GetTreeCtrl();
	HTREEITEM item;
	if(!(item=tree.GetSelectedItem())||item==tree.GetRootItem())
		return;
	REGEDIT reg;
	MakeRegInfo(tree,item,reg);
	if(strlen(reg.sunkey)==0)
	{
		MessageBox("你不能删除五个主键!!!","窥视-客户端",MB_ICONSTOP|MB_OK);
		return;
	}
	if(MessageBox("确定删除吗?","窥视-客户端",MB_ICONWARNING|MB_OKCANCEL)!=1)
		return;
	SOCKET s;
	DWORD ret;
	char meskey[32];
	char messunkey[512];
	strcpy(meskey,reg.key);
	strcpy(messunkey,reg.sunkey);
	if(!PeerCreateSocket(&s,PEER_STREAM))
	{
		return;
	}
	WSAEVENT hevent=WSACreateEvent();
	if(PeerConnectSocket(s,ADDRESS,7788))
	{
		COMMAND cmd;
		memset(&cmd,0,sizeof(cmd));
		cmd.CommandID=PEER_REGEDIT_DELETEKEY;
		if(!PeerSendDataS(s,(char*)&cmd,sizeof(cmd),&ret,hevent))
		{
			RegMess(meskey,messunkey,0,"失败");
			goto MYERROR ;
		}
		if(!PeerSendDataS(s,(char*)&reg,sizeof(reg),&ret,hevent))
		{
			RegMess(meskey,messunkey,0,"失败");
			goto MYERROR ;
		}
		else
		{
			
			if(!PeerRecvDataS(s,(char*)&cmd,sizeof(cmd),&ret,hevent)||ret!=sizeof(cmd))
			{
				RegMess(meskey,messunkey,0,"失败");
				goto MYERROR ;
			}
			HTREEITEM parentitem;
			parentitem=tree.GetParentItem(item);
			tree.DeleteItem(item);
			if(parentitem&&!tree.GetChildItem(parentitem))
			{
				TVITEM parent;
				parent.mask=TVIF_CHILDREN;
				parent.hItem=parentitem;
				parent.cChildren=0;
				tree.SetItem(&parent);
			}

		}
	}
	RegMess(meskey,messunkey,0,"成功");
MYERROR:
	PeerCloseSocket(s);
	WSACloseEvent(hevent);
}

void CPeerRegeditTreeView::RegMess(char *key, char *sunkey, int flag,char* stat)
{
	CMainFrame* pMainWnd=(CMainFrame*)AfxGetApp()->GetMainWnd();
	CListCtrl& mess=pMainWnd->m_pListMessage->GetListCtrl();
	CString a;
	if(flag)
		a="添加键:\" ";
	else
		a="删除键:\" ";
	CTime t = CTime::GetCurrentTime();
	int messcount=mess.GetItemCount();
	if(messcount>200)
		mess.DeleteAllItems();
	int insertindex;
	insertindex=mess.InsertItem(0,stat);
	a+=key;a+="\\";a+=sunkey;a+="\"";
	mess.SetItem(insertindex,1,LVIF_TEXT,a,0,0,0,NULL);
	mess.SetItem(insertindex,2,LVIF_TEXT,ADDRESS,0,0,0,NULL);
	a=t.Format("%Y-%m-%d %H:%M:%S");
	mess.SetItem(insertindex,3,LVIF_TEXT,a,0,0,0,NULL);
}
void CPeerRegeditTreeView::MESS(char* key,char* childkey, char *ifok,bool flag)
{
	CMainFrame* pMainWnd=(CMainFrame*)AfxGetApp()->GetMainWnd();
	CListCtrl& mess=pMainWnd->m_pListMessage->GetListCtrl();
	int messcount=mess.GetItemCount();
	if(messcount>200)
		mess.DeleteAllItems();
	else
	{
		CString a="枚举注册表键: \"";
		a+=key;
		if(strlen(childkey)!=0)
		{
		a+="\\";a+=childkey;
		}
		a+="\"";
		if(flag)
			a+=" 的所有子键";
		else
			a+=" 的所有值";
		int insertindex;
		insertindex=mess.InsertItem(0,ifok);
		mess.SetItem(insertindex,1,LVIF_TEXT,a,0,0,0,NULL);
		mess.SetItem(insertindex,2,LVIF_TEXT,ADDRESS,0,0,0,NULL);
		CTime t = CTime::GetCurrentTime();
		a=t.Format("%Y-%m-%d %H:%M:%S");
		mess.SetItem(insertindex,3,LVIF_TEXT,a,0,0,0,NULL);
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -