VB或VB.net中如何调用DLL中BYTE *参数

hezhilin 2011-06-01 12:13:39
HYUtil.dll中函数
HYUTIL_API UINT WINAPI HYGetMemSnap (UINT unIndex,BYTE *pImgBuf,long nSize,VIDEOFMT enFmt,DWORD dwTimeout);

帮助中说明如下:
UINT WINAPI HYGetMemSnap(UINT unIndex,BYTE *pImgBuf,long nSize,VIDEOFMT enFmt,DWORD dwTimeout)
说明:获取快照数据。在超时设置dwTimeout时间范围内,该函数将处于阻塞状态。
参数:UINT unIndex:基于0的设备索引。
BYTE * pImgBuf:用于接收快照图片的用户缓冲区地址。
long nSize:用户缓冲区尺寸,可通过HYGetImgBufsize函数获得。
VIDEOFMT enFmt:请求快照图片格式,目前支持FMT_YUY2和FMT_RGB两种。
DWORD dwTimeout:快照超时,单位毫秒。

返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。


我在VB中声明
Public Declare Function HYGetMemSnap Lib "HYUtil.DLL" (ByVal unIndex As Integer, ByRef pImgBuf As Long, ByVal nSize As Integer, ByVal enFmt As Integer, ByVal dwTimeout As Long) As Integer
然后如下调用:
Dim b(1000) As Byte
xx = HYGetMemSnap(0, VarPtr(b(0)), pnSize, 3, 100)
该函数应该是但数组中为空
请问 BYTE * 在VB 或VB.net中如何调用??
...全文
115 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
贝隆 2011-06-01
  • 打赏
  • 举报
回复
ByRef pImgBuf as Byte
hezhilin 2011-06-01
  • 打赏
  • 举报
回复
of123方法没有问题,谢谢!
已可以采到图片并显示出来了,但保存文件时出错,因为LPCTSTR参数我在VB中不会使用,不过我先结了这个贴子再开个新贴问吧!

UINT WINAPI HYSaveImgAsBmp(BYTE *pImgBuf,long nSize,LPCTSTR szBmpFileName)

xx = HYGetImgBufsize(0, pnSize, 3)
Dim b() As Byte
ReDim b(pnSize)
xx = HYGetMemSnap(0, b(0), pnSize, 3, 1000)
xx = HYPaintMemImg(b(0), pnSize, Me.Picture2.hWnd)
Dim sFile As String
sFile = "d:\a.bmp"
xx = HYSaveImgAsJpg(b(0), pnSize, StrPtr(sFile), 85) ‘这里有问题,保存不了图片文件
hezhilin 2011-06-01
  • 打赏
  • 举报
回复
ENFmt 直接写个3就行,不用定义
不过xx = HYGetMemSnap(0, b(0), pnSize, ENFmt, 100)提示
b byRef参数类型不符,是不是b()声明的不对呢

xx = HYGetImgBufsize(0, pnSize, 3) '取长了采图长度
Dim b() As Byte
ReDim b(pnSize)
xx = HYGetMemSnap(0, b(0), pnSize, 3, 100)
of123 2011-06-01
  • 打赏
  • 举报
回复
HYUTIL_API UINT WINAPI HYGetMemSnap (UINT unIndex,BYTE *pImgBuf,long nSize,VIDEOFMT enFmt,DWORD dwTimeout);

Public Declare Function HYGetMemSnap Lib "HYUtil.DLL" (ByVal unIndex As Long, ByRef pImgBuf As Byte, ByVal nSize As Long, ByRef enFmt As VIDEOFMT, ByVal dwTimeout As Long) As Long

需要声明自定义类 VIDEOFMT,可以查 HYUtil.h

xx = HYGetMemSnap(0, b(0), pnSize, ENFmt, 100)

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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