尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
//获取窗口句柄
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName,
string lpWindowName);
//获取窗口中控件的句柄
[DllImport("user32.dll")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent,
IntPtr hwndChildAfter, string lpszClass, string lpazWindow);
[DllImport("HCNetSDK.dll")]
public static extern int NET_DVR_RealPlay_V30(int lUserID, NET_DVR_CLIENTINFO struPlayInfo, string a, string b, bool bPreviewBlock);
//软解码预览参数
public struct NET_DVR_CLIENTINFO
{
public int lChannel;
public long lLinkMode;
public IntPtr hPlayWnd;
public string sMultiCastIP;
};
NET_DVR_CLIENTINFO struPlayInfo = new NET_DVR_CLIENTINFO();
IntPtr mwh = FindWindow(null, "Form");
IntPtr m_hWnd = FindWindowEx(mwh, IntPtr.Zero, null, "Panel2");
struPlayInfo.hPlayWnd = (IntPtr)m_hWnd; //设置播放句柄为有效句柄
struPlayInfo.lChannel = 1; //预览通道号
struPlayInfo.lLinkMode = 0;//最高位(31)为0表示主码流,为1表示子码流0~30位表示连接方式:0-TCP方式;1-UDP方式;2-多播方式;3-RTP方式;
bool bPreviewBlock = false; //请求码流过程是否阻塞,0:否,1:是
//软解码实现过程
m_lPlayHandle = NET_DVR_RealPlay_V30(lUserID, struPlayInfo, null, null, bPreviewBlock);
然后就是 m_hwnd =0. 导致NET_DVR_RealPlay_V30 提示尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
谁能帮我看看是怎么回事啊 ? 我刚开始接触这块,不怎么懂。