Html Dialog 浏览器经验总结

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);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值