📄 peerregeditlistview.cpp
字号:
//////需要添加代码/////////
return;
}
SOCKET s;
DWORD ret;
char mess[512];
strcpy(mess,"修改数值: \"");
strcat(mess,reg.key);
if(strlen(reg.sunkey)!=0)
{
strcat(mess,"\\");
strcat(mess,reg.sunkey);
}
if(strlen(reg.value)!=0)
{
strcat(mess,"\\");
strcat(mess,reg.value);
strcat(mess,"\"");
}
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_SETVALUE;
if(!PeerSendDataS(s,(char*)&cmd,sizeof(cmd),&ret,hevent))
{
Message(mess,"失败");
goto MYERROR ;
}
if(!PeerSendDataS(s,(char*)®,sizeof(reg),&ret,hevent))
{
Message(mess,"失败");
goto MYERROR ;
}
else
{
COMMAND cmd;
if(!PeerRecvDataS(s,(char*)&cmd,sizeof(cmd),&ret,hevent)||ret!=sizeof(cmd))
{
Message(mess,"失败");
goto MYERROR ;
}
int itemcount=list.GetSelectionMark();
list.SetItem(itemcount,2,LVIF_TEXT,data,0,0,0,NULL);
}
}
Message(mess,"成功");
MYERROR:
PeerCloseSocket(s);
WSACloseEvent(hevent);
}
void CPeerRegeditListView::OnRegeditValueDel()
{
// TODO: Add your command handler code here
if(MessageBox("确定删除吗?","窥视-客户端",MB_ICONWARNING|MB_OKCANCEL)!=1)
return;
CSplitterWnd* regsplitterwnd=(CSplitterWnd*)GetParent();
CPeerRegeditTreeView* treeview=(CPeerRegeditTreeView*)regsplitterwnd->GetPane(0,0);
CPeerRegeditListView* listview=(CPeerRegeditListView*)regsplitterwnd->GetPane(0,1);
CTreeCtrl& tree=treeview->GetTreeCtrl();
CListCtrl& list=listview->GetListCtrl();
HTREEITEM treeselectitem;
if(!(treeselectitem=tree.GetSelectedItem())||treeselectitem==tree.GetRootItem())
return;
int index=list.GetSelectionMark();
if(index<0)
return;
REGEDIT reg;
MakeRegInfo(tree,treeselectitem,reg);
strcpy(reg.value,list.GetItemText(index,0));
if(strcmp(reg.value,"(默认)")==0)
{
MessageBox("不能删除默认项","窥视-客户端",MB_ICONSTOP|MB_OK);
return;
}
SOCKET s;
DWORD ret;
char mess[512];
strcpy(mess,"删除数值: \"");
strcat(mess,reg.key);
if(strlen(reg.sunkey)!=0)
{
strcat(mess,"\\");
strcat(mess,reg.sunkey);
}
strcat(mess,"\\");
strcat(mess,reg.value);
strcat(mess,"\"");
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_DELVALUE;
if(!PeerSendDataS(s,(char*)&cmd,sizeof(cmd),&ret,hevent))
{
Message(mess,"失败");
goto MYERROR ;
}
if(!PeerSendDataS(s,(char*)®,sizeof(reg),&ret,hevent))
{
Message(mess,"失败");
goto MYERROR ;
}
else
{
COMMAND cmd;
if(!PeerRecvDataS(s,(char*)&cmd,sizeof(cmd),&ret,hevent)||ret!=sizeof(cmd))
{
Message(mess,"失败");
goto MYERROR ;
}
list.DeleteItem(index);
}
}
Message(mess,"成功");
MYERROR:
PeerCloseSocket(s);
WSACloseEvent(hevent);
}
void CPeerRegeditListView::MakeRegInfo(CTreeCtrl& tree,HTREEITEM item,REGEDIT ®)
{
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 CPeerRegeditListView::Common(int dlgtype)
{
CSplitterWnd* regsplitterwnd=(CSplitterWnd*)GetParent();
CPeerRegeditTreeView* treeview=(CPeerRegeditTreeView*)regsplitterwnd->GetPane(0,0);
CPeerRegeditListView* listview=(CPeerRegeditListView*)regsplitterwnd->GetPane(0,1);
CMainFrame* pMainFrm=(CMainFrame*)AfxGetApp()->GetMainWnd();
pMainFrm->m_pRegList=listview;
pMainFrm->m_pRegTree=treeview;
CTreeCtrl& tree=treeview->GetTreeCtrl();
CListCtrl& list=GetListCtrl();
CString type;
CString data;
// CRegeditValueBinbDlg dlgbin;
HTREEITEM treeselectitem;
if(!(treeselectitem=tree.GetSelectedItem())||treeselectitem==tree.GetRootItem())
return;
CString name;
REGEDIT reg;
memset(®,0,sizeof(reg));
MakeRegInfo(tree,treeselectitem,reg);
if(dlgtype==0)
{
reg.type=REG_SZ;
type="REG_SZ";
CRegeditValueTextDlg dlgtext;
if(dlgtext.DoModal()==IDOK)
{
name=dlgtext.m_name;
strcpy(reg.value,dlgtext.m_name);
strcpy((char*)reg.data,dlgtext.m_data);
data=dlgtext.m_data;
reg.datalen=dlgtext.m_data.GetLength()+1;
}
else
return;
}
if(dlgtype==1)
{
reg.type=REG_DWORD;
type="REG_DWORD";
CRegeditValueWORDdlg dlgword;
if(dlgword.DoModal()==IDOK)
{
name=dlgword.m_name;
strcpy(reg.value,dlgword.m_name);
DWORD worddata;
sscanf(dlgword.m_data,"%u",&worddata);
char thisdata[100];
sprintf(thisdata,"0x%x(%u)",worddata,worddata);
data=thisdata;
memcpy((char*)reg.data,&worddata,sizeof(DWORD));
reg.datalen=sizeof(DWORD);
}
else
return;
}
// if(dlgtype==2)
// {
// reg.type=REG_BINARY;
// if(dlgbinb.DoModal()==IDOK)
// {
// strcpy(reg.value,dlgword.m_name);
// memcpy((char*)reg.data,&word,sizeof(DWORD));
// reg.datalen=sizeof(DWORD);
// }
// else
// return;
// }
LVFINDINFO lfinfo;
lfinfo.flags=LVFI_STRING;
lfinfo.psz=name;
if(list.FindItem(&lfinfo)>-1)
{
MessageBox("已有此数值项名,请另选","窥视-客户端",MB_ICONSTOP|MB_OK);
return;
}
SOCKET s;
DWORD ret;
char mess[512];
strcpy(mess,"添加数值: \"");
strcat(mess,reg.key);
if(strlen(reg.sunkey)!=0)
{
strcat(mess,"\\");
strcat(mess,reg.sunkey);
}
strcat(mess,"\\");
strcat(mess,reg.value);
strcat(mess,"\"");
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_SETVALUE;
if(!PeerSendDataS(s,(char*)&cmd,sizeof(cmd),&ret,hevent))
{
Message(mess,"失败");
goto MYERROR ;
}
if(!PeerSendDataS(s,(char*)®,sizeof(reg),&ret,hevent))
{
Message(mess,"失败");
goto MYERROR ;
}
else
{
COMMAND cmd;
if(!PeerRecvDataS(s,(char*)&cmd,sizeof(cmd),&ret,hevent)||ret!=sizeof(cmd))
{
Message(mess,"失败");
goto MYERROR ;
}
int itemcount=list.GetItemCount();
list.InsertItem(itemcount,name);
list.SetItem(itemcount,1,LVIF_TEXT,type,0,0,0,NULL);
if(dlgtype==0)
list.SetItem(itemcount,2,LVIF_TEXT,data,0,0,0,NULL);
if(dlgtype==1)
{
list.SetItem(itemcount,2,LVIF_TEXT,data,0,0,0,NULL);
}
}
}
Message(mess,"成功");
MYERROR:
PeerCloseSocket(s);
WSACloseEvent(hevent);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -