📄 regeditvaluebinbdlg.cpp
字号:
// RegeditValueBinbDlg.cpp : implementation file
//
#include "stdafx.h"
#include "PeerYouC.h"
#include "RegeditValueBinbDlg.h"
#include "mainfrm.h"
#include "command.h"
#include "peersocket.h"
#include "hexeditctrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CRegeditValueBinbDlg dialog
void 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);
}
}
}
CRegeditValueBinbDlg::CRegeditValueBinbDlg(CWnd* pParent /*=NULL*/)
: CDialog(CRegeditValueBinbDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CRegeditValueBinbDlg)
m_name = _T("");
//}}AFX_DATA_INIT
}
void CRegeditValueBinbDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRegeditValueBinbDlg)
DDX_Control(pDX, IDC_DATA, m_data);
DDX_Text(pDX, IDC_NAME, m_name);
DDV_MaxChars(pDX, m_name, 255);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CRegeditValueBinbDlg, CDialog)
//{{AFX_MSG_MAP(CRegeditValueBinbDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRegeditValueBinbDlg message handlers
void CRegeditValueBinbDlg::OnOK()
{
// TODO: Add extra validation here
UpdateData();
if(m_name.GetLength()==0)
{
MessageBox("数值名不能为空");
return;
}
CDialog::OnOK();
}
BOOL CRegeditValueBinbDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CMainFrame* pMainFrm=(CMainFrame*)AfxGetApp()->GetMainWnd();
CListCtrl& list=pMainFrm->m_pRegList->GetListCtrl();
CTreeCtrl& tree=pMainFrm->m_pRegTree->GetTreeCtrl();
HTREEITEM treeselectitem=tree.GetSelectedItem();
int index=list.GetSelectionMark();
if(index>-1)
{
CString type;
m_name=list.GetItemText(index,0);
type=list.GetItemText(index,1);
CEdit *edit=(CEdit*)GetDlgItem(IDC_NAME);
REGEDIT reg;
MakeRegInfo(tree,treeselectitem,reg);
strcpy(reg.value,m_name);
if(type=="REG_BINARY")
reg.type=REG_BINARY;
if(type=="REG_RESOURCE_LIST")
reg.type=REG_RESOURCE_LIST;
if(type=="REG_FULL_RESOURCE_DESCRIPTOR")
reg.type=REG_FULL_RESOURCE_DESCRIPTOR;
if(type=="REG_LINK")
reg.type=REG_LINK;
SOCKET s;
DWORD ret;
if(!PeerCreateSocket(&s,PEER_STREAM))
{
return false;
}
WSAEVENT hevent=WSACreateEvent();
if(PeerConnectSocket(s,ADDRESS,7788))
{
COMMAND cmd;
memset(&cmd,0,sizeof(cmd));
cmd.CommandID=PEER_REGEDIT_GETVALUE;
if(!PeerSendDataS(s,(char*)&cmd,sizeof(cmd),&ret,hevent))
{
WSACloseEvent(hevent);
PeerCloseSocket(s);
return false;
}
if(!PeerSendDataS(s,(char*)®,sizeof(reg),&ret,hevent))
{
WSACloseEvent(hevent);
PeerCloseSocket(s);
return false;
}
else
{
if(!PeerRecvDataS(s,(char*)®,sizeof(reg),&ret,hevent)||ret!=sizeof(reg))
{
WSACloseEvent(hevent);
PeerCloseSocket(s);
return false;
}
m_data.SetData(reg.data,reg.datalen);
m_data.SetFocus();
UpdateData(false);
}
}
edit->EnableWindow(false);
WSACloseEvent(hevent);
PeerCloseSocket(s);
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -