你没帖出来,但我通过你说的
你说你的返回值都是false说明不是参数类型设置错误
而是参数的值设置错误!
你还是帖出来的好!
你说你的返回值都是false说明不是参数类型设置错误
而是参数的值设置错误!
你还是帖出来的好!
解决方案 »
- GoogleEarth之Kml文件的读取修改求教
- 各位前辈,小弟对C#很感兴趣,想学习一下,但不知从何下手,还望各位指点迷津...
- 关于从数据库中读出图片的代码问题。。。
- 如何在windows中获取网络接口是否插入网线?
- oracle数据库创建自动增长列,在C#程序中如何调用啊?急,在线等啊!!!!!!!!!!!!!!!!!
- C# winform中怎么对dataGrid中的列累加求和
- 怎样才能使程序兼容xp,windows 7和vista
- 使用过msde 2000 者请进!!!!!
- 怎么在程序中自动设置ODBC数据源
- 新建C# ASP.NET及应用程序出错:Extensibility DTE Object unavailable
- 自定义涵数的RETURN会和IF语句的RETRUN发生冲突,如何解决?
- 我觉得论坛应该增加贴图的功能,
API的原型如下:
BOOL InternetReadFile(
HINTERNET hFile,
LPVOID lpBuffer,
DWORD dwNumberOfBytesToRead,
LPDWORD lpdwNumberOfBytesRead
);
我C#中的调用形式是:
[DllImport("WinINet.dll",EntryPoint="InternetReadFile",ExactSpelling=false, CharSet=CharSet.Ansi, SetLastError=true)]
unsafe static extern bool InternetReadFile(IntPtr hFile,[MarshalAs(UnmanagedType.LPStr)]string lpbuffer,long BytesToRead,[MarshalAs(UnmanagedType.U8)] long bread);
buffer不能用String代替,应该用StringBuilder或者byte[],如果是byte[],MarshalAs(UnmangedType.LPArray)。
DWORD是32位的,对应于int/uint而不是long,
最后一个参数是指针,应该用ref int,
而且,整个函数声明不需要unsafe。前面已经有一个贴子再问了,用贴子提前不是更好?份在两处,给自己和别人都制造不方便。
多谢高手指点,问题已解决,多谢,多谢。
可我还有点不明白,为什么API函数里参数同是LP字母开头的指针类型
LPVOID lpBuffer用C#的byte[]LPDWORD lpdwNumberOfBytesRead用C#的ref int?