我对这方面的编程不懂就要象IE一样可以随时停止,我现在的代码实现不了这种效果,在调用(可能是api函数HttpSendRequest)时,不接收完数据就不会返回,下面是我的代码,可能有些代码没copy全,请问在这些代码的基础上,修改出可取消的效果,行不行?我知道有异步接收INTERNET_FLAG_ASYNC和回调函数InternetStatusCallback,但我不知道怎么用 // Connect to host.
hConnect := InternetConnect( hOpen,PChar(FHostName),FPort,nil,nil,
INTERNET_SERVICE_HTTP,0,0);
InetCheck(LongBool(hConnect)); InternetSetOption(hConnect,INTERNET_OPTION_CONNECT_TIMEOUT,
@FConnectTimeout,sizeof(DWORD));
// add by xlee 021121 1200
InternetSetOption(hConnect, INTERNET_OPTION_RECEIVE_TIMEOUT,
@FReceiveTimeout, sizeof(DWORD));
InternetSetOption(hConnect, INTERNET_OPTION_SEND_TIMEOUT,
@FSendTimeout, sizeof(DWORD));
// end add by xlee 021121 1200
FullUrl:=FUrlPath+FExtraInfo; //GMR 30/06/99
if AcceptTypes.Text='' then
hResource := HttpOpenRequest(hConnect,PChar(FMethod),PChar(FullUrl),nil,
nil,nil,SecureFlag or FIFlags, DWORD(self))
else begin
for n:=0 to AcceptTypes.Count-1 do
if (Length(AcceptTypes[n])>0) and (n<100) then
aAcceptTypes[n]:=AcceptTypes[n];
hResource := HttpOpenRequest(hConnect,PChar(FMethod),PChar(FullUrl),nil,
nil,@aAcceptTypes,SecureFlag or FIFlags, DWORD(self));
end; InetCheck(HttpSendRequest(hResource,PChar(Headers),Length(Headers),
FRequestStream.Memory,FRequestStream.Size))
给位兄弟,快快帮忙……
hConnect := InternetConnect( hOpen,PChar(FHostName),FPort,nil,nil,
INTERNET_SERVICE_HTTP,0,0);
InetCheck(LongBool(hConnect)); InternetSetOption(hConnect,INTERNET_OPTION_CONNECT_TIMEOUT,
@FConnectTimeout,sizeof(DWORD));
// add by xlee 021121 1200
InternetSetOption(hConnect, INTERNET_OPTION_RECEIVE_TIMEOUT,
@FReceiveTimeout, sizeof(DWORD));
InternetSetOption(hConnect, INTERNET_OPTION_SEND_TIMEOUT,
@FSendTimeout, sizeof(DWORD));
// end add by xlee 021121 1200
FullUrl:=FUrlPath+FExtraInfo; //GMR 30/06/99
if AcceptTypes.Text='' then
hResource := HttpOpenRequest(hConnect,PChar(FMethod),PChar(FullUrl),nil,
nil,nil,SecureFlag or FIFlags, DWORD(self))
else begin
for n:=0 to AcceptTypes.Count-1 do
if (Length(AcceptTypes[n])>0) and (n<100) then
aAcceptTypes[n]:=AcceptTypes[n];
hResource := HttpOpenRequest(hConnect,PChar(FMethod),PChar(FullUrl),nil,
nil,@aAcceptTypes,SecureFlag or FIFlags, DWORD(self));
end; InetCheck(HttpSendRequest(hResource,PChar(Headers),Length(Headers),
FRequestStream.Memory,FRequestStream.Size))
给位兄弟,快快帮忙……
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货