Groky, это хорошее начало ... Спасибо, что начали. Я попытался подключить это, но получил NotSupportedException.
Я вставил текст из моего тестового приложения ниже. Обратите внимание, что я попытался украсить структуру с помощью [StructLayout (LayoutKind.Sequential)]. Я также сделал все члены публичными, чтобы устранить любые проблемы с доступностью объектов.
public partial class Form1 : Form
{
[DllImport("aygshell.dll")]
static extern int SHCameraCapture(ref SHCAMERACAPTURE pshcc);
[StructLayout(LayoutKind.Sequential)]
struct SHCAMERACAPTURE
{
public Int32 cbSize;
public IntPtr hwndOwner;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string szFile;
[MarshalAs(UnmanagedType.LPStr)]
public string pszInitialDir;
[MarshalAs(UnmanagedType.LPStr)]
public string pszDefaultFileName;
[MarshalAs(UnmanagedType.LPStr)]
public string pszTitle;
public Int32 StillQuality;
public Int32 VideoTypes;
public Int32 nResolutionWidth;
public Int32 nResolutionHeight;
public Int32 nVideoTimeLimit;
public Int32 Mode;
}
private void ShowCamera()
{
SHCAMERACAPTURE captureData = new SHCAMERACAPTURE
{
cbSize = sizeof (Int64),
hwndOwner = (IntPtr)0,
szFile = "\\My Documents",
pszDefaultFileName = "picture.jpg",
pszTitle = "Camera Demo",
StillQuality = 0,
VideoTypes = 1,
nResolutionWidth = 480,
nResolutionHeight = 640,
nVideoTimeLimit = 0,
Mode = 0
};
SHCameraCapture(ref captureData);
}
private void button1_Click(object sender, EventArgs e)
{
ShowCamera();
}