avicap32.dll 找不到入口点

junfeng8668 2011-10-24 03:58:07
想做一个摄像头驱动程序,可是在调用avicap32.dll的时候,却找不到入口点

请各位帮帮忙!
...全文
245 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
junfeng8668 2011-10-24
  • 打赏
  • 举报
回复
谢谢这位仁兄了,我已经解决了,是调试小助手出了点小问题
yalan 2011-10-24
  • 打赏
  • 举报
回复
代码无问题,avicap32.dll注册了吗?是否在项目中引用了?
junfeng8668 2011-10-24
  • 打赏
  • 举报
回复
谢谢这位仁兄的回复,这是代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace ServerDll
{
public class ClassVideoCapture
{
private int hCaptureM;
private bool isUnload = false;

public ClassVideoCapture()
{

}
~ClassVideoCapture()
{
if (!isUnload)
{
this.UnLoad();
}
}
[DllImport("avicap32.dll")]
private static extern int CapCreateCaptureWindowA(string strWindowName,long dwStyle,int x,int y,int width,int height,int hwdParent,int nID);
[DllImport("user32.dll")]
private static extern int SendMessage(int hwnd, int wMsg, int wParam, int lParam);
[DllImport("user32.dll")]
private static extern int SendMessage(int hwnd, int wMsg, int wParam, string lPara);
[DllImport("kernel32.dll")]
private static extern bool CloseHandle(int hObject);//我记得在这种动态链接库中的方法名是不能够乱写的,好像,方法名都是已经存在的哦!
public bool Initialize(Control aContainer,int intWidth,int intHeight)
{
hCaptureM = CapCreateCaptureWindowA("", 0x400000000 | 0x10000000, 0, 0, intWidth, intHeight, aContainer.Handle.ToInt32(),1);
if (hCaptureM == 0)
{
return false;
}
int ret = SendMessage(hCaptureM, 1034, 0, 0);
if (ret == 0)
{
CloseHandle(hCaptureM);
return false;
}

ret = SendMessage(hCaptureM, 1074, 1, 0);
if (ret == 0)
{
this.UnLoad();
return false;
}
ret = SendMessage(hCaptureM, 1077, 1, 0);
if (ret == 0)
{
this.UnLoad();
return false;
}
//WM_CAP_SET_PREVIEWRATE
ret = SendMessage(hCaptureM, 1076, 66, 0);
if (ret == 0)
{
this.UnLoad();
return false;
}
return true;
}
private void UnLoad()
{
int ret = SendMessage(hCaptureM, 1035, 0, 0);
CloseHandle(this.hCaptureM);
isUnload = true;
}
public void SingleFramBegin()
{
int ret = SendMessage(hCaptureM, 1094, 0, 0);
}
public void SingleFramEnd()
{
int ret = SendMessage(hCaptureM, 1095, 0, 0);
}
public void SingleFramMode()
{
int ret = SendMessage(hCaptureM, 1084, 0, 0);
}
public void PreViewMode()
{
int ret=SendMessage(hCaptureM,1074,1,0);
}
public void CopyToClipBoard()
{
int ret = SendMessage(hCaptureM, 1054, 0, 0);
}
public void ShowFormatDialog()
{
int ret = SendMessage(hCaptureM, 1065, 0, 0);

}
public void SaveToDIB(string fileName)
{
int ret = SendMessage(hCaptureM,1049,0,fileName);
}
public void ShowDisplayDialog()
{
int ret = SendMessage(hCaptureM, 1067, 0, 0);
}

public System.Drawing.Image getCaptureImage()
{
System.Windows.Forms.IDataObject Idata = System.Windows.Forms.Clipboard.GetDataObject();
System.Drawing.Image retImage = null;
if (Idata != null)
{
if (Idata.GetDataPresent(System.Windows.Forms.DataFormats.Bitmap))
{
retImage = (System.Drawing.Image)Idata.GetData(System.Windows.Forms.DataFormats.Bitmap);
}
else if (Idata.GetDataPresent(System.Windows.Forms.DataFormats.Dib))
{
retImage = (System.Drawing.Image)Idata.GetData(System.Windows.Forms.DataFormats.Dib);
}
}
return retImage;
}


}
}
yalan 2011-10-24
  • 打赏
  • 举报
回复
我自己做的没问题啊,是否引用错了,贴点代码上来
http://blog.csdn.net/zzmdegm/article/details/1915364

110,477

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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