尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

zhuersuo zhuersuo 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
//获取窗口句柄
[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 提示尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

谁能帮我看看是怎么回事啊 ? 我刚开始接触这块,不怎么懂。
...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部
zhuersuo
C# 111,129 成员 642,539 内容