在c#中怎么调用系统的照相机?

禳咱静一静吧 2012-06-01 01:04:26
我给自己做的系统添加了一个添加相片的功能!请问各位大师应该怎么做?急求帮助?
...全文
481 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
baobaodqh 2012-06-03
  • 打赏
  • 举报
回复
收益匪浅啊
禳咱静一静吧 2012-06-03
  • 打赏
  • 举报
回复
多谢各位大师 真是我的良师益友啊!
烟波钓 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

http://www.csharpwin.net/ddwstp/net/csharp/4630dr5863.shtml
[/Quote]

您不睡觉的哇
色拉油 2012-06-01
  • 打赏
  • 举报
回复
sing System;
using System.Runtime.InteropServices;
using System.Drawing.Imaging;
using System.Windows.Forms;
using System.Drawing;
namespace YHhotel.YHhotelWindows
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class video
{
//5个传入参数
private IntPtr myHand;
private int myWidth;
private short myHeight;
private int myLeft;
private int myTop;
//调用avicap32.dll
public struct videohdr_tag
{
public byte[] lpData;
public int dwBufferLength;
public int dwBytesUsed;
public int dwTimeCaptured;
public int dwUser;
public int dwFlags;
public int[] dwReserved;

}
[DllImport("avicap32.dll",CharSet=CharSet.Ansi, SetLastError=true, ExactSpelling=true)]
public static extern int capCreateCaptureWindowA([MarshalAs(UnmanagedType.VBByRefStr)] ref string lpszWindowName, int dwStyle, int x, int y, int nWidth, short nHeight, int hWndParent, int nID);
[DllImport("avicap32.dll", CharSet=CharSet.Ansi, SetLastError=true, ExactSpelling=true)]
public static extern bool capGetDriverDescriptionA(short wDriver, [MarshalAs(UnmanagedType.VBByRefStr)] ref string lpszName, int cbName, [MarshalAs(UnmanagedType.VBByRefStr)] ref string lpszVer, int cbVer);
[DllImport("user32", CharSet=CharSet.Ansi, SetLastError=true, ExactSpelling=true)]
public static extern bool DestroyWindow(int hndw);
[DllImport("user32", EntryPoint="SendMessageA", CharSet=CharSet.Ansi, SetLastError=true, ExactSpelling=true)]
public static extern int SendMessage(int hwnd, int wMsg, int wParam, [MarshalAs(UnmanagedType.AsAny)] object lParam);
[DllImport("user32", CharSet=CharSet.Ansi, SetLastError=true, ExactSpelling=true)]
public static extern int SetWindowPos(int hwnd, int hWndInsertAfter, int x, int y, int cx, int cy, int wFlags);
[DllImport("vfw32.dll")]
public static extern string capVideoStreamCallback(int hwnd,videohdr_tag videohdr_tag);
[DllImport("vicap32.dll", CharSet=CharSet.Ansi, SetLastError=true, ExactSpelling=true)]
public static extern bool capSetCallbackOnFrame(int hwnd,string s);
//自定义参数:
private int hHwnd;
//构造函数
public video(IntPtr myPtr,int left, int top, int width, short height)
{
myHand=myPtr;
myLeft=left;
myTop=top;
myWidth=width;
myHeight=height;
//
// TODO: 在此处添加构造函数逻辑
//
}

//打开视频:
public void opVideo()
{
int intDevice=0;
string refDevice=intDevice.ToString();
hHwnd=capCreateCaptureWindowA(ref refDevice,1342177280,0,0,640,480,myHand.ToInt32(),0);
if(SendMessage(hHwnd,0x40a,intDevice,0)>0)
{
SendMessage(this.hHwnd,0x435,-1,0);
SendMessage(this.hHwnd,0x434,0x42,0);
SendMessage(this.hHwnd,0x432,-1,0);
SetWindowPos(this.hHwnd,1,0,0,myWidth,Convert.ToInt32(myHeight),6);
}
else
{
DestroyWindow(this.hHwnd);
}
}
//停止视频
public void CloVideo()
{
SendMessage(this.hHwnd,0x40b,0,0);
DestroyWindow(this.hHwnd);
}
//捕获视频
public Image CatchVideo()
{
SendMessage(this.hHwnd,0x41e,0,0);
IDataObject obj1=Clipboard.GetDataObject();
Image getIma=null;
if(obj1.GetDataPresent(typeof(Bitmap)))
{
Image image1=(Image)obj1.GetData(typeof(Bitmap));
getIma=image1;
}
return getIma;
}
}
}

110,538

社区成员

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

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

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