windows mobile 不支持 InternetSetStatusCallback??

里沃特 2009-10-22 06:12:42
请高手回答!
我今天调试的时候,输出错误:NotSupportedException
...全文
101 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
里沃特 2009-10-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jiangyongtao 的回复:]
既然是用C#开发的,可能是P/Invoke调用dll的时候,对函数相关的参数的声明不正确导致的。
楼主检查检查。
[/Quote]


public delegate void InternetSetStatusCallbackHandler(IntPtr h_Internet, int dwContext, int dwInternetStatus, IntPtr lpStatusInfo, int dwStatusInfoLen);

[DllImport("wininet.dll", SetLastError = true)]
public static extern long InternetSetStatusCallback(IntPtr hInternet, InternetSetStatusCallbackHandler callback);

// 调用

WinInet.InternetSetStatusCallback(m_hInternet, new WinInet.InternetSetStatusCallbackHandler(InternetOpenCallback));

private void InternetOpenCallback(IntPtr h_Internet, int dwContext, int dwInternetStatus, IntPtr lpStatusInfo, int dwStatusInfoLen) {
}




这样不对吗?
世外涛缘 2009-10-23
  • 打赏
  • 举报
回复
既然是用C#开发的,可能是P/Invoke调用dll的时候,对函数相关的参数的声明不正确导致的。
楼主检查检查。
里沃特 2009-10-23
  • 打赏
  • 举报
回复
谢谢两位。

我是用 C# 开发,直接 DllImport 函数,然后在模拟器里面调试。
原来我是用 InternetReadFile 来读取请求返回的东西,因为读取不完整,就改用异步读取。
首先调用
InternetOpen
然后再
InternetSetStatusCallback
InternetConnect
整个函数体里我用 try ... catch 捕获错误,
结果发现执行InternetSetStatusCallback的时候就提示 NotSupportedException
我也查过 windows mobile 6 SDK 都说支持。

难道之前要调用ConnMgrEstablishConnectionSync吗?
我看网上很多文章都没有提到这个。

不知道我调用顺序错了没有,在之前是否还要调用其他函数?
hhygcy 2009-10-22
  • 打赏
  • 举报
回复
这个是很基础的回调函数
那些
InternetConnect
HttpOpenRequest
都要靠这个回调的
你看看是不是先前没有调用过
connection manager的
ConnMgrEstablishConnectionSync?
世外涛缘 2009-10-22
  • 打赏
  • 举报
回复
查了MSDN,支持InternetSetStatusCallback。

Requirements
OS Versions: Windows CE 2.0 and later.
Header: Wininet.h.
Link Library: Wininet.lib.

楼主确认引用的lib版本是CE的么

7,659

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧