解决方案 »
- 32位系统VirtualAllocEx能分配大于4G的地址么? 虚拟地址空间是64T啊
- 一个关于父类中定义vector在子类中使用的问题。
- 关于MFC无法进入OnTimer
- ADO 连SQL2005 程序崩溃。。。。
- 怎样建完一个Excel文件,再建另一个Excel文件?
- 《WINDOWS 程序设计》怎么学才好
- 关于Win32 SDK中InvalidateRect()的问题!
- 请问有关图片拼接(用于合成全景图)的问题?
- 左键单击时,如何将Slider控件的滑块直接跳到鼠标单击处(如Winamp中的一样),而不是响应SB_PAGELEFT或SB_PAGELEFT消息?谢谢!
- VC中CString类型字符串怎么存入到byte类型数组中
- cdhtmldialog作为子窗体的子窗体刷新问题
- opencv没有?//GDI+ 没有解码功能吧 ,下面封装的ImageFromIDResource函数 直接能把jpeg数据转成图片
是lpctUrl2="&tn=baiduhome_pg&ie=utf-8";吧
MessageBox ( NULL , lpctUrl , "打开网页" , MB_OK);
显示正常,看不出问题。
把这段代码用在百度搜索上,可以运行正常。但是用在其他网站上(有连续页面的)却不行了。MessageBox显示地址正确,并且地址复制到浏览器地址栏内也能正常浏览,但是程序却罢工了。
所以我怀疑这段代码有问题,尤其是生成网址字符串的方法。不知道有没有好点的办法,更通用点的、更健康的?
LPCTSTR lpctUrl2;//固定的字符串
lpctUrl1="http://www.baidu.com/s?wd=vc&pn=";
lpctUrl2="&tn=baiduhome_pg&ie=utf-8';因为你使用LPCTSTR,所以下面的串需要用TEXT或者 _T包起来.
lpctUrl1= TEXT("http://www.baidu.com/s?wd=vc&pn=");
lpctUrl2= TEXT("&tn=baiduhome_pg&ie=utf-8");不过, 你是VC6.0, 默认是多字符集环境, 刚好没有问题.
下面同理
wsprintf 需要改成 TCHAR版本的. _stprintfTCHAR strUrl[0x200] = {0};
_stprintf(strUrl,TEXT("%s%d%s"),lpctUrl1,i,lpctUrl2);//生成格式化字符串
hOpenUrl= InternetOpenUrl ( hLink, //使用已经打开成功的网络连接
strUrl,//指定URL
NULL,//指定发送到HTTP服务器的头信息
0, //指定发送到HTTP服务器的头信息长度
INTERNET_FLAG_RELOAD,
0);然后就可以使用fidder抓包, 看什么原因了. 也许你的URL已经对了, 但是服务器确实没有返回结果.
如果没有fidder, 可以把_stprintf的结果URL串strUrl直接复制到浏览器上去测试.
#include <tchar.h>
#include <stdio.h>
加入上面两行后实现成功。非常感谢!
问题估计出在_stprintf和wsprintf函数用法上。
但是使用TEXT()和_stprintf函数后
_stprintf(lptUrl,TEXT("%s%d"),lpctUrl1,i);//生成格式化字符串
lpcUrl=lptUrl;//指针格式转换,通过中间变量进行
这两个变量还是用
LPCTSTR lpctUrl;//作为InternetOpenUrl第二个参数使用
LPTSTR lptUrl;//作为函数wsprintf的输出参数
后面这个转换就通不过编译,为什么呢?
方法1:(可行)
#include <tchar.h>
#include <stdio.h>LPCTSTR lpctUrl1;//固定的字符串
LPCTSTR lpctUrl2;//固定的字符串lpctUrl1=TEXT("HTTP://FDFFFFFFD111");
lpctUrl2=TEXT("FDFFFFFFD222");TCHAR strUrl[0x200] = {0};
_stprintf(strUrl,TEXT("%s%d%s"),lpctUrl1,i,lpctUrl2);//生成格式化字符串 hOpenUrl= InternetOpenUrl ( hLink, //使用已经打开成功的网络连接
strUrl,//指定URL:
方法2:(可行)
#include <tchar.h>
#include <stdio.h>lpctUrl1=TEXT("HTTP://FDFFFFFFD111");
lpctUrl2=TEXT("FDFFFFFFD222");
lptUrl="";
_stprintf(lptUrl,TEXT("%s%d%s"),lpctUrl1,i,lpctUrl2);//生成格式化字符串 hOpenUrl= InternetOpenUrl ( hLink, //使用已经打开成功的网络连接
lptUrl,//指定URL:
NULL,//指定发送到HTTP服务器的头信息
0, //指定发送到HTTP服务器的头信息长度
INTERNET_FLAG_RELOAD,
0);//传递给回调函数的参数
方法3:(不行,为什么?)
#include <tchar.h>
#include <stdio.h>LPCTSTR lpctUrl1;//固定的字符串
LPCTSTR lpctUrl2;//固定的字符串lpctUrl1=TEXT("HTTP://FDFFFFFFD111");
lpctUrl2=TEXT("FDFFFFFFD222");LPCTSTR lpctUrl;//作为InternetOpenUrl第二个参数使用
LPTSTR lptUrl;//作为函数wsprintf的输出参数_stprintf(lptUrl,TEXT("%s%d%s"),lpctUrl1,i,lpctUrl2);//生成格式化字符串
lpcUrl=lptUrl;//这里出错cannot convert from 'char *' to 'int'hOpenUrl= InternetOpenUrl ( hLink, //使用已经打开成功的网络连接
lpctUrl,//指定URL
NULL,//指定发送到HTTP服务器的头信息
0, //指定发送到HTTP服务器的头信息长度
INTERNET_FLAG_RELOAD,
0);
看来关键问题还是要用函数_stprintf和TEXT()。