1 socket
在此项目中需要引入
#include
/*环境:系统开机自动运行这个浏览器(在注册表中设置),因为,该浏览器运行速度,快于系统的网络设置速度——也就是说希望网路还没有连接 好,浏览器已经运行起来了。这个时候需要用socket检测网络是否通常。等待,然后重新检查。
*/
do{
WSADATA wsaData;
wsaStartupState = WSAStartup(MAKEWORD(2,1), &wsaData);
//stateCode.Format("/n wsaStartupState返回值为:%d/n",wsaStartupState);
//log.WriteString(stateCode);
//log.Flush();
if (wsaStartupState != NO_ERROR)
{
continue;
}
SOCKET sendingSocket = INVALID_SOCKET;
sendingSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sendingSocket == INVALID_SOCKET)
{
//WSACleanup();
//log.WriteString("建立Socket失败,系统退出!");
//log.Flush();
continue;
//return FALSE;
}
SOCKADDR_IN serverAddr;
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(port);
serverAddr.sin_addr.s_addr = inet_addr(lpIp);
int retCode = connect(sendingSocket, (SOCKADDR *) &serverAddr, sizeof(serverAddr));
//stateCode.Format("returnCode返回值为:%d",retCode);
//log.WriteString(stateCode);
//log.Flush();
closesocket(sendingSocket);
WSACleanup();
}while(retCode==SOCKET_ERROR);
2 读取工程的绝对路径。
错误:在vs2010中,我读取文件,把文件保持在和release目录下(和生成的.exe文件相同目录)在程序中写:
当.exe文件脱了开发环境,这样用./来取相对路径就不行了。所有需要用函数读取工程的绝对路径。
WCHAR exeFullPath[MAX_PATH];
GetModuleFileName(NULL,exeFullPath,MAX_PATH);//得到程序模块名称,全路径
//这里得出的exeFullPath是类似X:/program file/my document/…/test.exe(包括绝对路径+文件名)
得到绝对路径:X:/program file/my document/…/需要去掉text.exe。用到下面的方法。
CString mainFile = CString(exeFullPath);
CString mainDir = mainFile.Left(mainFile.ReverseFind(//)+1);
3 读取ini文件,类似java中的property文件(键值对)
ini文件的格式类型
[config]
webAddress=http://127.0.0.1:8000/index/
port=8000
ip=127.0.0.1
读取这样的文件,需要用GetPrivateProfileInt(读取整型数)GetPrivateProfileString(读取字符串)
读取port(整型)
int port = GetPrivateProfileInt(“config”,“timeout”,8000,filePath);//参数的意思,第一个是ini文件中的标签“config”,第二个要读取的参数的名称,
//如果读取失败,返回一个默认的值,第四个是读取ini文件的路径+文件名
读取字符串
TCHAR webAddress[200];
memset(webAddress,0,200);//清空这段内存
GetPrivateProfileString(“config”,“webAddress”,””,webAddress,200,filePath)。//参数说明第一个标签,第二个参数的名称,第三个,读取失败,设置缺省的值,第四,返回读取的值,第五,要读取缓冲区,第六,读取文件的路径。
4 浏览器屏蔽掉js脚本错误。
在源文件中加一个方法。当然在头文件中也要声明。
BOOL CIEHTMLDialogDlg::OnAmbientProperty(COleControlSite* pSite, DISPID dispid,
VARIANT* pvar)
{
if(dispid==DISPID_AMBIENT_DLCONTROL){
pvar->vt = VT_I4;
pvar->lVal =
DLCTL_NO_JAVA|
DLCTL_DLIMAGES|
DLCTL_SILENT|
DLCTL_NO_DLACTIVEXCTLS|
DLCTL_PRAGMA_NO_CACHE|
DLCTL_RESYNCHRONIZE|
DLCTL_URL_ENCODING_ENABLE_UTF8;
return TRUE;
}
return CDHtmlDialog::OnAmbientProperty(pSite,dispid,pvar);
}