OCX控件接口说明(V2.3.1)

OCX控件接口说明(V2.3.1)
OCX控件接口说明(V2.3.1)

OCX控件接口说明

V2.3版本(20091014)

控件版本更新说明:

1.版本号改为

2.

3.9.1

2.增加接口:BMPCapturePicV23、JPEGCapturePicV23、StartRecordV23

3.支持第三方IPC的添加

方法:

1.注册

1.1 注册

long Login(LPCTSTR lpServerIP, long lPort, LPCTSTR lpUserName, LPCTSTR lpPassword)

功能:注册用户到硬盘录像机

参数说明:

lpServer IP:硬盘录像机的IP地址

lPort:硬盘录像机端口号

lpUserName:登陆的用户名

lpPassword:登陆的密码

返回值:lUserID提供给其他接口使用。-1表示注册失败。

1.2 设置UserID

BOOL SetUserID(long lUserID)

功能:设置UserID,如果注册成功,可以通过该接口传入UserID.

参数说明:

lUserID:要传入的UserID值

返回值:TRUE表示成功,FALSE表示失败。

2.注销

2.1 注销

BOOL Logout()

功能:从硬盘录像机上注销某个用户

返回值:TRUE表示成功,FALSE表示失败。

2.2 释放OCX

BOOL ClearOCX()

功能:停止一切操作,例如录像、预览等操作

返回值:TRUE表示成功,FALSE表示失败。

3.解析IP地址

BSTR GetServerIP(LPCTSTR lpURL)

功能:域名方式登陆时解析所连接硬盘录像机的IP

参数说明:

lpURL:域名地址

返回值:返回解析到的硬盘录像机的IP地址,返回空表示失败。

4.获取硬盘录像机的信息

BSTR GetServerInfo()

功能:获取硬盘录像机的信息,注册成功后才有效

返回值:以XML形式记录硬盘录像机信息的一个字符串。

形式:

< ChannelNumber> byChanNum //模拟通道个数

< DVRType> byDVRType //类型

< DiskNumber> byDiskNum //硬盘数

< SerialNumber> bySerialNumber //序列号

< AlarmInPortNum> byAlarmInPortNum

//模拟通道报警输入个数 byAlarmOutPortNum

//模拟通道报警输出个数< StartChannel> byStartChan //起始通道号

byAudioChanNum

//语音通道个数byMaxDigitChannelNum

//最大数字通道插槽数

5.预览

5.1 开始预览

BOOL StartRealPlay(long lChannelNum ,long lProtocolType, long lStreamType)

功能:开始预览(如果调用了SetPlayWndType接口,预览画面就按照设置的比例显示。如果没有,当前预览通道是HD720p或者HD900p的分辨率,预览画面自动变成16:9的比例;如果获取不到分辨率,预览画面大小就是当前控件大小;其他分辨率时,预览画面为4:3的比例)

参数说明:

lChannelNum:播放通道号,0 –代表通道1,1 –代表通道2

lProtocolType:协议类型,0 – TCP,1 - UDP

lStreamType:码流类型,0 表示主码流,1 表示子码流

返回值:TRUE表示成功,FALSE表示失败。

5.2 停止预览

BOOL StopRealPlay()

功能:停止预览

返回值:TRUE表示成功,FALSE表示失败。

5.3 设置播放器帧缓冲区的个数

BOOL SetRealPlayBufNumber(long lBufNumber)

功能:设置播放器帧缓冲区的个数,在预览时才有效

参数说明:

lBufNumber:设置播放器帧缓冲区最大的帧数,取值为1-50。缓冲区越大,

图象越流畅;缓冲区越小,实时性越好。若是复合流建议最

小值设置成6。

返回值:TRUE表示成功,FALSE表示失败。

5.4 设置预览时丢B帧个数

BOOL RealPlayThrowBFrame(long lThrowBType)

功能:设置解码时丢弃B帧的个数,在预览时才有效

参数说明:

lThrowBType:丢B帧个数,0 - 不丢,1 –丢一个,2 –丢2个

返回值:TRUE表示成功,FALSE表示失败。

5.5 动态产生一个关键帧

BOOL MakeKeyFrame(long lChannelNum)

功能:网络预览时动态产生一个关键帧

参数说明:

lChannelNum:通道号

返回值:TRUE表示成功,FALSE表示失败。

6.抓图

6.1 抓BMP图

BOOL BMPCapturePicture(LPCTSTR lpSavePath, BOOL bShowSaveFile)

功能:抓BMP图,在预览时才有效

参数说明:

lpSavePath:设置保存图片的路径。默认为"C:\OCXBMPCaptureFiles" ,图片保存在写入路径的BMPCapture文件夹中

bShowSaveFile:抓图成功后是否弹出保存图片文件的文件夹

返回值:TRUE表示成功,FALSE表示失败。

6.2 抓JPEG图

BOOL JPEGCapturePicture(long lChannelNum, short iPicSize, short iPicQuality, LPCTSTR lpSavePath, BOOL bShowSaveFile)

功能:抓JPEG图,不需要预览。当图像压缩分辨率为VGA时,支持0=CIF, 1=QCIF, 2=4CIF抓图,当分辨率为3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA,7=XVGA, 8=HD900p仅支持当前分辨率的抓图参数说明:

lChannelNum:通道号。1 - 代表通道1,2 –代表通道2

iPicSize:分辨率0=CIF, 1=QCIF, 2=4CIF 3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA

iPicQuality:图片质量0-最好1-较好2-一般

lpSavePath:设置保存图片的路径。默认为"C:\OCXJPEGCaptureFiles"。图片保存在写入路径的JPEGCapture文件夹中。

bShowSaveFile:抓图成功后是否弹出保存图片文件的文件夹

返回值:TRUE表示成功,FALSE表示失败。

6.3 按传入文件名抓BMP图

BOOL BMPCapturePicV23(LPCTSTR lpSavePath, BOOL bShowSaveFile, LPCTSTR lpSaveFileName)

功能:抓BMP图,在预览时才有效

参数说明:

lpSavePath:设置保存图片的路径。默认为"C:\OCXBMPCaptureFiles" ,图片保存在写入路径的BMPCapture文件夹中

bShowSaveFile:抓图成功后是否弹出保存图片文件的文件夹

lpSaveFileName:保存文件的名称,默认为"IP_通道号_时间.bmp"

返回值:TRUE表示成功,FALSE表示失败。

6.4 按传入文件名抓JPEG图

BOOL JPEGCapturePicV23(long lChannelNum, short iPicSize, short iPicQuality, LPCTSTR lpSavePath, BOOL bShowSaveFile, LPCTSTR lpSaveFileName)

功能:抓JPEG图,不需要预览。当图像压缩分辨率为VGA时,支持0=CIF, 1=QCIF, 2=4CIF抓图,当分辨率为3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA,7=XVGA, 8=HD900p仅支持当前分辨率的抓图参数说明:

lChannelNum:通道号。1 - 代表通道1,2 –代表通道2

iPicSize:分辨率0=CIF, 1=QCIF, 2=4CIF 3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA

iPicQuality:图片质量0-最好1-较好2-一般

lpSavePath:设置保存图片的路径。默认为"C:\OCXJPEGCaptureFiles"。图片保存在写入路径的JPEGCapture文件夹中。

bShowSaveFile:抓图成功后是否弹出保存图片文件的文件夹

lpSaveFileName: 保存图片的文件名,默认为"IP_通道号_时间.jpeg"

返回值:TRUE表示成功,FALSE表示失败。

7.对讲

7.1 开始对讲

BOOL StartTalk(long lTalkChanNum)

功能:开始对讲

参数说明:

lTalkChanNum:对讲通道

返回值:TRUE表示成功,FALSE表示失败。

7.2 停止对讲

BOOL StopTalk()

功能:停止对讲

返回值:TRUE表示成功,FALSE表示失败。

7.3 设置语音对讲声音

BOOL SetVoiceComClientVolume(long lV olume)

功能:设置语音对讲PC端的音量

参数说明:

lV olume:设置的音量,取值为0 – 10

返回值:TRUE表示成功,FALSE表示失败。

8.云台控制

8.1 云台控制开始

BOOL PTZCtrlStart(long lCtrlType,long lSpeed)

功能:云台开始控制命令,在预览时才有效

参数说明:

lCtrlType:为云台动作:0 -- 云台向上,1 -- 云台向下,2 -- 云台向左,3 -- 云台向右, 4 -- 焦距缩进,5 -- 焦距拉远,6 -- 焦点近,7 -- 焦点远,8 -- 光圈小,9 -- 光圈大,10 –自动, 11 –灯光,12 –雨刷,13 - 云台左上, 14 - 云台右上, 15 - 云台左下, 16 - 云台右下。

lSpeed:云台速度,范围为1 – 7。如果值为0,则按照无带速接口控制云台。

返回值:TRUE表示成功,FALSE表示失败。

8.2 云台控制停止

BOOL PTZCtrlStop(long lCtrlType,long lSpeed)

功能:云台停止控制命令,在预览时才有效

参数说明:

lCtrlType:为云台动作:0 -- 云台向上,1 -- 云台向下,2 -- 云台向左,

3 -- 云台向右,

4 -- 焦距缩进,

5 -- 焦距拉远,

6 -- 焦点近,

7 -- 焦点远,

8 --

光圈小,9 -- 光圈大,10 –自动, 11 –灯光,12 –雨刷,13 - 云台左上, 14 - 云台右上, 15 - 云台左下, 16 - 云台右下。

lSpeed:云台速度,范围为1 – 7。如果值为0,则按照无带速接口控制云台。

返回值:TRUE表示成功,FALSE表示失败。

8.3 设置预置点

BOOL PTZCtrlSetPreset(long lPresetNumber)

功能:设置云台预置位,需要预览

参数说明:

lPresetNumber:云台预置位号,最多支持256个。

返回值:TRUE表示成功,FALSE表示失败。

8.4 调用预置点

BOOL PTZCtrlGotoPreset(long lPresetNumber)

功能:调用云台预置位,需要预览

参数说明:

lPresetNumber:云台预置位号,最多支持256个。

返回值:TRUE表示成功,FALSE表示失败。

9.视频参数

9.1 获取视频参数

BSTR GetVideoEffect()

功能:获取视频参数,需要预览

返回值:以XML形式记录视频参数的一个字符串,返回空表示失败

形式:

byBright //亮度( 取值为1 – 10 )

byContrast //对比度( 取值为1- 10 )

bySaturation //饱和度( 取值为1- 10 )

byHue //色调( 取值为1 - 10 )

9.2 设置视频参数

BOOL SetVideoEffect(long lBrightValue, long lContrastValue, long lSaturationValue, long lHueValue)

功能:设置视频参数,需要预览

参数说明:

lBrightValue:亮度( 取值为1 – 10 )

lContrastValue:对比度( 取值为1- 10 )

lSaturationValue:饱和度( 取值为1- 10 )

lHueValue:色调( 取值为1 - 10 )

返回值:TRUE表示成功,FALSE表示失败。

10.声音控制

10.1 设置声音模式

BOOL SetAudioMode(long lSoundMode)

功能:设置声音播放模式,需要在预览前设置

参数说明:

lSoundMode:打开声音模式。1 –独占模式,2 –共享模式

返回值:TRUE表示成功,FALSE表示失败

10.2 打开声音

BOOL OpenSound(long lSoundMode)

功能:打开声音,需要预览

参数说明:

lSoundMode:打开声音模式。1 –独占模式,2 –共享模式

返回值:TRUE表示成功,FALSE表示失败。

10.3 关闭声音

BOOL CloseSound(long lSoundMode)

功能:关闭声音,需要预览

参数说明:

lSoundMode:关闭声音模式。1 –独占模式,2 –共享模式

返回值:TRUE表示成功,FALSE表示失败。

10.4 调节音量

BOOL SetV olume(long lV olume)

功能:调节音量

参数说明:

lV olume:设置的音量,取值为0 – 9

返回值:TRUE表示成功,FALSE表示失败。

11.录像

11.1 开始录像

BOOL StartRecord(LPCTSTR lpSavePath)

功能:开始录像,在预览时才有效

参数说明:

lpSavePath:设置保存录像文件的路径。默认为“C:\OCXRecordFiles”。录像文件保存在写入路径的当前日期下。例如:C:\OCXRecordFiles\2009-07-13 返回值:TRUE表示成功,FALSE表示失败。

11.2 停止录像

BOOL StopRecord(BOOL bShowSaveFile)

功能:停止录像, 在预览时才有效

参数说明:

bShowSaveFile 停止录像后是否弹出保存录像文件的文件夹

返回值:TRUE表示成功,FALSE表示失败。

11.3 开始远程录像

BOOL StartRemoteRecord(long lChannelNum)

功能:开始远程录像

参数说明:

lChannelNum:录像通道号,0 –代表通道1

返回值:TRUE表示成功,FALSE表示失败。

11.4 停止远程录像

BOOL StopRemoteRecord(long lChannelNum)

功能:停止远程录像

参数说明:

lChannelNum:录像通道号,0 –代表通道1

返回值:TRUE表示成功,FALSE表示失败。

11.5 按传入文件名开始录像

BOOL StartRecordV23(LPCTSTR lpSavePath, LPCTSTR lpSaveFileName)

功能:开始录像,在预览时才有效

参数说明:

lpSavePath:设置保存录像文件的路径。默认为“C:\OCXRecordFiles”。录像文件保存在写入路径的当前日期下。例如:C:\OCXRecordFiles\2009-07-13 lpSaveFileName: 保存图片的文件名,默认为"IP_通道号_时间.mp4"

返回值:TRUE表示成功,FALSE表示失败。

12.远程回放

12.1 获取录像文件

BSTR SearchRemoteRecordFile(long lChannelNum, long lFileType, LPCTSTR lpStartTime, LPCTSTR lpStopTime, BOOL bATMType,BOOL bNeedCardNum, LPCTSTR lpCardNumber)

功能:获取录像文件

参数说明:

lChannelNum:通道号,0 –代表通道1,1-代表通道2

lFileType:查找文件的类型。如果不是ATM机:bATMTyp为false, 0 –全部,1 –定时录像,2 –移动侦测,3 –报警触发,4 –报警|动测,5 –报警&动测,6 –命令触发,7 –手动触发。如果是ATM机:bA TMType为true, 0 –全部,1 –定时录像,2 –移动侦测,3 –接近报警,4 –出钞报警,5 –进钞报警,6 –命令触发,7 –手动触发,8 –震动报警。

lpStartTime:开始时间,格式为:2007-3-8 2:30:50。不能为空

lpStopTime:结束时间,格式为:2007-3-9 10:30:47。不能为空

bATMType:是否按卡号查询,TRUE表示是,FALSE表示不是

bNeedCardNum:是否需要卡号信息,TRUE表示是,FALSE表示不是

lpCardNumber:卡号信息

返回值:以XML形式记录所查询的远程录像文件的一个字符串。如果是“null”,代表没有录像文件。如果是空表示失败,失败原因:lUserID小于0,通道号不存在,开始时间大于结束时间,获取文件列表失败,由于服务器忙,或网络故障,获取文件列表异常终止。

形式:

dwIndex

sFileName //录像文件名称

struStartTime //录像文件开始时间

struStopTime //录像文件结束时间

dwFileSize //录像文件的大小

dwIndex

sFileName //录像文件名称

struStartTime //录像文件开始时间

struStopTime //录像文件结束时间

dwFileSize //录像文件的大小

…//一样的N条记录

12.2 按文件名回放

BOOL PlayBackByName(LPCTSTR lpFileName)

功能:按文件名回放录像文件,如果调用了SetPlayWndType接口,就按设置的比例进行显示,否则就按主码流分辨率进行对应的比例显示。

参数说明:

lpFileName:回放的文件名

返回值:- TRUE表示成功,FALSE表示失败。

12.3 按时间回放

BOOL PlayBackByTime(long lChannelNum, LPCTSTR lpStartTime, LPCTSTR lpStopTime)

功能:按时间回放录像文件,如果调用了SetPlayWndType接口,就按设置的比例进行显示,否则就按主码流分辨率进行对应的比例显示。

参数说明:

lChannelNum:通道号,0 –代表通道1, 1 –代表通道2

lpStartTime:开始时间,格式为:2007-3-8 2:30:50。不能为空

lpStopTime:结束时间,格式为:2007-3-8 2:30:50。不能为空

返回值:TRUE表示成功,FALSE表示失败。失败原因:lUserID小于0,通道号不存在,开始时间大于结束时间。

12.4 停止回放

BOOL StopPlayBack()

功能:停止回放

返回值:TRUE表示成功,FALSE表示失败。

12.5 播放控制

BOOL PlayBackControl(long lPlayBackControlType, long lInV alue)

功能:播放控制

参数说明:

lPlayBackControlType:控制命令:1-开始播放,2-停止播放,3-暂停播放,4-恢复播放,5-快放,6-慢放,7-正常速度,8-单帧放,9-打开声音,10-关闭声音,11-调节声音,12-改变文件回放的进度, 20-丢B帧

lInV alue:输入参数,有些控制命令需要用到

返回值:TRUE表示成功,FALSE表示失败。

12.6 保存回放文件片段

BOOL PlayBackSaveFile(LPCTSTR lpSaveFileName)

功能:回放时,保存回放的片段

参数说明:

lpSaveFileName:保存的文件名称

返回值:TRUE表示成功,FALSE表示失败。

12.7 停止保存回放文件片段

BOOL StopSaveFile()

功能:回放时,停止保存回放的片段

返回值:TRUE表示成功,FALSE表示失败。

12.8 获取回放保存片段的文件名

BSTR GetPlaybackSaveFileName()

功能:获取回放时,保存片段的文件名

返回值:返回保存片段的文件名。

12.9获取回放OSD显示时间

BSTR GetPlaybackOSDTime()

功能:获取回放OSD显示时间

返回值:显示标准时间显示,空表示失败。

12.10 回放抓图

BOOL PlayBackCapture(LPCTSTR lpSavePath, BOOL bShowSaveFile)

功能:回放时,停止保存回放的片段

参数说明:

lpSavePath:保存图片的文件名,文件名的长度小于等于100 字节。路径默认为“C:\OCXSaveAllFiles\”。图片保存在写入路径的PlaybackCapture文件夹中。

bShowSaveFile: 回放抓图成功后是否弹出保存图片文件的文件夹

返回值:TRUE表示成功,FALSE表示失败。

12.11 按文件名下载

BOOL DownLoadByFileName(LPCTSTR lpRecordFileName, LPCTSTR

lpDownLoadPath)

功能:根据文件名下载文件,生成的文件名格式为:IP地址_通道号_当前时间.mp4

参数说明:

lpRecordFileName:要下载的文件名

lpDownLoadPath:下载录像的路径, 路径默认为“C:\OCXDownloadFiles”。录像文件保存在写入路径的当前日期下。例如:C:\OCXDownloadFiles\2009-07-13.

返回值:TRUE表示成功,FALSE表示失败。

BOOL DownLoadByFileNameV23(LPCTSTR lpRecordFileName, LPCTSTR lpFileStartTime, LPCTSTR lpDownLoadPath)

功能:根据文件名下载文件,生成的文件名格式为:IP地址_端口号_通道号_文件起始时间_随机时间.mp4

参数说明:

lpRecordFileName:要下载的文件名

lpFileStartTime: 要下载文件的起始时间

lpDownLoadPath:下载录像的路径, 路径默认为“C:\OCXDownloadFiles”。录像文件保存在写入路径的文件起始时间下。例如:C:\OCXDownloadFiles\2009-07-13.

返回值:TRUE表示成功,FALSE表示失败。

12.12 按时间下载

BOOL DownLoadByTime(long lChannelNum, LPCTSTR lpStartTime, LPCTSTR lpStopTime, LPCTSTR lpDownLoadPath)

功能:按时间下载,生成的文件格式为:IP地址_通道号_当前时间.mp4

参数说明:

lChannelNum:回放通道号,0 - 代表通道1, 1 –代表通道2.

lpStartTime:开始时间,格式为:2007-3-8 2:30:50。不能为空

lpStopTime:结束时间,格式为:2007-3-9 10:30:47 。不能为空

lpDownLoadPath:下载录像的路径,路径默认为“C:\OCXDownloadFiles”。录像文件保存在写入路径的当前日期下。例如:C:\OCXDownloadFiles\2009-07-13 返回值:TRUE表示成功,FALSE表示失败。失败原因:lUserID小于0,通道号不存在,开始时间大于结束时间,保存路径错,下载失败。

BOOL DownLoadByTimeV23 (long lChannelNum, LPCTSTR lpStartTime, LPCTSTR lpStopTime, LPCTSTR lpDownLoadPath)

功能:按时间下载,生成的文件格式为:IP地址_端口号_通道号_文件起始时间_随机时间.mp4

参数说明:

lChannelNum:回放通道号,0 - 代表通道1, 1 –代表通道2.

lpStartTime:开始时间,格式为:2007-3-8 2:30:50。不能为空

lpStopTime:结束时间,格式为:2007-3-9 10:30:47 。不能为空

lpDownLoadPath:下载录像的路径,路径默认为“C:\OCXDownloadFiles”。录像文件保存在写入路径的文件起始时间下。例如:C:\OCXDownloadFiles\2009-07-13.

返回值:TRUE表示成功,FALSE表示失败。失败原因:lUserID小于0,通道号不存在,开始时间大于结束时间,保存路径错,下载失败。

12.13 停止下载

BOOL StopDownLoadFile()

功能:停止下载

参数说明:

返回值:TRUE表示成功,FALSE表示失败。

12.14 获取下载进度

long GetDownloadPos()

功能:获取下载进度

返回值:-1 表示失败,0 – 100 表示下载进度,100表示下载结束,大于100表示由于网络原因,下载异常终止。

12.15 获取文件回放进度

long GetPlayBackPos()

功能:获取文件回放进度

返回值:-1 表示失败,0-100表示回放进度,100表示回放结束,大于100表示由于网络原因,回放异常终止。

12.16 获取当前已经播放的时间

long GetPlayBackTime ()

功能:获取当前已经播放的时间

返回值:-1 表示失败,其他值表示时间,取小时、分钟、秒,分别除60取余数。

12.17 获取当前已经播放的帧数

long GetPlayBackFrame ()

功能:获取当前已经播放的帧数

返回值:-1表示失败,其他值表示成功。

12.18 获取当前播放文件的总帧数

long GetPlayBackTotalFrame ()

功能:获取当前播放文件的总帧数

返回值:-1表示失败,其他值表示成功。

12.19 获取当前播放文件的总时间

long GetPlayBackTotalTime ()

功能:获取当前播放文件的总时间

返回值:-1表示失败,其他值表示时间,取小时、分钟、秒,分别除60取余数。

12.20 刷新显示

BOOL PlayBackRefresh()

功能: 刷新显示,暂停和单帧放时保留图像

返回值:-1表示失败,其他值表示成功。

13.远程配置

13.1 弹出远程配置窗口

BOOL SetRemoteConfig(LPCTSTR lpUserName, long lLanguageType, BOOL bShowIPCCfg, long lBkColorType, long lColorType)

功能:弹出远程配置窗口

参数说明:

lpUserName:登陆设备的用户名

lLanguageType:语言类型,0 - 简体中文, 1- 英文

bShowIPCCfg:是否显示IPC配置界面

lBkColorType:背景颜色类别

lColorType :字体颜色类别

返回值:TRUE表示成功,FALSE表示失败。

13.2 设置远程配置显示项

BOOL SetRemCfgNode(long lMainNode, long lSubNode, long bEnable)

功能:设置远程配置的配置项(在SetRemoteConfig前使用)

参数说明:

lMainNode:配置树的主节点索引值(0xff -- 全部)

lSubNode:配置树的子节点索引值(0xff -- 全部)

bEnable:启用标识符

返回值:TRUE表示成功,FALSE表示失败。

14.远程日志

BSTR SearchRemoteLogInfo(long lSelectMode, long lMajorType, long lMinorType, LPCTSTR lpStartTime, LPCTSTR lpStopTime, BOOL bSearchSmart) 功能:获取硬盘录像机日志

参数说明:

lSelectMode:查询方式。0 –全部,1 –按类型,2 –按时间,3 –按时间和类型

lMajorType:主类型。0 –全部,1 - 报警, 2 - 异常, 3 - 操作, 4 - 附加信息

lMinorType:次类型。0 –全部,(其他选项根据主类型不同而不同)

lpStartTime:开始时间,格式为:2007-3-8 2:30:50。不能为空

lpStopTime:结束时间,格式为:2007-3-9 10:30:47。不能为空

bSearchSmart: 是否查询Smart信息。为TRUE时,lSelectMode, lMajorType, lMinorType无效.

返回值:以XML形式记录所查询的远程日志的一个字符串。如果是“null”,代表没有日志信息。如果是空表示失败,失败原因:lUserID小于0,通道号不存在,开始时间大于结束时间,由于服务器忙,或网络故障,搜索日志异常终止

形式:

dwIndex //序号

strLogTime //日志时间

dwAlarmInPort //报警输入号

dwAlarmOutPort

//报警输出号

dwHardDiskNumber

//硬盘号

dwChannelNumber

//通道号,-1代表全部,0代表没有

dwMajorType //主类型

dwMinorType //次类型

strNetUser //网络操作用户

strNetUserIP //远程操作IP地址

strLocalUser //本地操作用户

strLogInfomation

//日志详细信息描述

dwIndex

strLogTime //日志时间

dwAlarmInPort //报警输入口

dwAlarmOutPort

//报警输出口

dwHardDiskNumber

//硬盘号

dwChannelNumber

//通道号

dwMajorType //主类型

dwMinorType //次类型

strNetUserIP //远程操作IP地址

strLocalUser //本地操作用户

strLogInfomation

//日志详细信息描述

…//一样的好多条记录

注:当dwAlarmInPort 为0,dwAlarmOutPort 为0,dwHardDiskNumber 为0,ChannelNumber为0,strLocalUser为空,strNetUser 为空,xml文档中返回的对应值是“null”。

dwMajorType值:1 - 报警, 2 - 异常, 3 - 操作。

当dwMajorType为1时,dwMinorType值:1 - 报警输入,2 - 报警输出,3 - 移动侦测报警开始,4 - 移动侦测报警结束,5 - 遮挡报警开始,6 - 遮挡报警结束。当dwMajorType为2时,dwMinorType值:1 - 信号丢失,2 - 非法访问,3 - 硬盘满,4 - 硬盘错误,5 - MODEM 掉线,6 -IP地址冲突,7 - 网线断,8 - 录像失败,9 - IPC未连接上,10 - 视频输入异常(只针对模拟通道)。

当dwMajorType为3时,dwMinorType值:1 –开机,2 –关机,3 –非法关机,4 –本地重启设备,5 - 本地登陆,6 –本地注销登陆,7 - 本地配置参数,8 - 本地按文件回放, 9 - 本地按时间回放, 10 - 本地开始录像, 11 - 本地停止录像, 12 - 本地云台控制, 13 - 本地预览, 14 - 本地修改时间, 15 - 本地升级, 16 - 本地导出录象文件,17 - 本地格式化硬盘,18 - 导出本地配置文件,19 - 导入本地配置文件,20 - 本地备份文件, 21 - 本地锁定录像文件,22 - 本地解锁录像文件,23 - 本地手动清除和触发报警,24 - 本地添加IPC,25 - 本地删除IPC,26 - 本地设置IPC,27 - 远程登录, 28 - 远程注销登陆, 29 - 远程开始录像, 30 - 远程停止录像, 31 - 开始透明传输, 32 - 停止透明传输, 33 - 远程获得参数, 34 - 远程配置参数, 35 - 远程获得状态, 36 - 远程布防, 37 - 远程撤防, 38 - 远程重启, 39 - 开始语音对讲, 40 - 停止语音对讲, 41 - 远程升级, 42 - 远程按文件回放, 43 - 远程按时间回放, 44 - 远程云台控制,45 - 远程格式化硬盘,46 - 远程关机,

47 - 远程锁定文件,48 - 远程解锁文件,49 - 远程导出配置文件,50 - 远程导入配置文件,51 - 远程导出录象文件,52 - 远程手动清除和触发报警,53 - 远程添加IPC,54 - 远程删除IPC,55 - 远程设置IPC。

当dwMajorType为4时,dwMinorType值:1 - 硬盘信息,2 - SMART信息,3 - 开始录像,4 - 停止录像,5 - 超期录像删除。

15.重新启动

BOOL RebootServer()

功能:重新启动硬盘录像机

返回值:TRUE表示成功,FALSE表示失败。

16.恢复默认值

BOOL RestoreConfig()

功能:恢复默认值

返回值:TRUE表示成功,FALSE表示失败。

17. 报警输出

17.1 控制报警输出

BOOL ControlAlarmOut(long lAlarmOutNum, long lAlarmOutStatic)

功能:控制报警输出

参数说明:

lAlarmOutNum:报警输出口号

lAlarmOutStatic:报警输出状态,0 –停止输出,1 –输出

返回值:TRUE表示成功,FALSE表示失败。

17.2 获取报警输出通道状态

long GetAlarmOutStatus(long lAlarmOutNum)

功能:获取报警输出通道状态

参数说明:

lAlarmOutNum:报警输出口号

返回值:0 表示无效,1 表示有效,-1 表示失败。

18.获取设备状态

BSTR GetServerWorkState()

功能:获取硬盘录像机工作状态

参数说明:

返回值:以XML形式记录工作状态的一个字符串。如果是空表示失败.

形式:

dwServerStatic< /ServerStatic> //设备的状态

dwLocalShowStatic < /LocalShowStatic>

//本地显示状态

byRecord < /Record> //是否在录像

bySignal < /Signal> //连接的信号状态

byHardWareStatic

//通道硬件状态

byBitRate //实际码率

byLingkNum //连接的个数

byV olume //硬盘容量

byFreeSpace< /FreeSpace> //硬盘的剩余空间

byHardDiskStatic

//硬盘的状态

….

注:dwServerStatic的值:0 - "正常",1 - "CPU占用率超过85%", 2 - "硬件错误"

dwLocalShowStatic的值:0 - "正常",1 - "不正常"

byRecord的值:0 - "不录像",1 - "录像"

bySignal的值:0 - "正常", 1 - "信号丢失"

byHardWareStatic的值:0 - "正常",1 - "异常"

byHardDiskStatic的值:0 - "活动", 1 - "休眠", 2 - "不正常"

19.获取设备通道名称

BSTR GetChannelName(long lChannelNum)

功能:获取硬盘录像机通道名称

参数说明:

lChannelNum:通道号,0 - 代表通道1, 1 –代表通道2

返回值:返回通道名称,如果为空表示失败。

20.获取错误类型

long GetLastError()

功能:获取操作错误类型

返回值:0 - 没有错误,1 - 用户名密码错误,2 - 权限不足,3 - 没有初始化,4 - 通道号错误,5 - 连接到DVR的客户端个数超过最大,6 - 版本不匹配,7 - 连接服务器失败,8 - 向服务器发送失败,9 - 从服务器接收数据失败,10 - 从服务器接收数据超时,11 - 传送的数据有误,12 - 调用次序错误,13 - 无此权限,14 - DVR命令执行超时,15 - 串口号错误,16 - 报警端口错误,17 - 参数错误,18 - 服务器通道处于错误状态,19 - 没有硬盘,20 - 硬盘号错误,21 - 服务器硬盘满,22 - 服务器硬盘出错,23 - 服务器不支持,24 - 服务器忙,25 - 服务器修改不成功,26 - 密码输入格式不正确,27 - 硬盘正在格式化,不能启动操作,28 - DVR资源不足,29 - DVR操作失败,30 - 打开PC声音失败,31 - 服务器语音对讲被占用,32 - 时间输入不正确,33 - 回放时服务器没有指定的文件,34 - 创建文件出错,35 - 打开文件出错,36 - 上次的操作还没有完成,37 - 获取当前播放的时间出错,38 - 播放出错,39 - 文件格式不正确,40 - 路径错误,41 - 资源分配错误,42 - 声卡模式错误,43 - 缓冲区太小,44 - 创建SOCKET出错,45 - 设置SOCKET 出错,46 - 个数达到最大,47 - 用户不存在,48 - 写FLASH出错,49 - DVR 升级失败,50 - 解码卡已经初始化过,51 - 播放器中错误,52 - 用户数达到最大,53 - 获得客户端的IP地址或物理地址失败,54 - 该通道没有编码,

55 - IP地址不匹配,56 - MAC地址不匹配,57 - 升级文件语言不匹配,58 -

播放器路数达到最大, 59 - 备份设备中没有足够空间进行备份, 60 - 没有找到指定的备份设备,61 - 图像素位数不符,限24色,62 - 图片高*宽超限,限128*256,63 - 图片大小超限,限100K,64 - 载入当前目录下Player Sdk 出错,65 - 找不到Player Sdk中某个函数入口,66 - 载入当前目录下DSsdk 出错,67 - 找不到DsSdk中某个函数入口,68 - 调用DsSdk.dll中某个函数失败,69 - 声卡被独占,70 - 加入多播组失败,71 - 建立日志文件目录失败,72 - 绑定套接字失败,73 - socket连接中断,此错误通常是由于连接中断或目的地不可达,74 - 注销时用户ID正在进行某操作,75 - 监听失败,

76 - 程序异常,77 - 写文件失败,78 - 禁止格式化只读硬盘,79 - 用户

配置结构中存在相同的用户名,80 - 导入参数时设备型号不匹配,81 - 导入参数时语音不匹配,82 - 导入参数时软件版本不匹配,83 - 预览时外接IP通道不在线,84 - 加载高清IPC通讯库StreamTransClient.dll失败, 85 - 加载转码库CVT_StdToHik.dll失败。

21.获取设备名称

BSTR GetServerName()

功能:获取硬盘录像机名称

返回值:硬盘录像机名称,如果为空表示失败。

ocx控件制作步骤

制作activex控件(ocx)步骤1.安装IDE(.NET) 2.第一步 3.第二步

4.第三步 双击解决方案中的backup3Ctrl 5.第四步 制作按钮控件需要编辑的事件 属性中 得到按钮按下事件,编辑代码 void Cbackup3Ctrl::OnLButtonDown(UINT nFlags, CPoint point) { if( MessageBox("确定要开始帐前备份吗?", "确定 ",MB_YESNO|MB_DEFBUTTON2)==IDYES)

WinExec("c:\\中心日终\\backup_before.bat", SW_SHOW); else return; COleControl::OnLButtonDown(nFlags, point); } 6.第五步 在代码中找OnDraw方法:填写代码 // Cbackup3Ctrl::OnDraw - 绘图函数 void Cbackup3Ctrl::OnDraw( CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) { DoSuperclassPaint(pdc, rcBounds); CSize Extent = pdc->GetTextExtent("备份中"); CPoint pt( rcBounds.CenterPoint().x - Extent.cx/2, rcBounds.CenterPoint().y - Extent.cy/2 ); int nMode = pdc->SetBkMode(TRANSPARENT); pdc->TextOut(pt.x, pt.y, "备份中"); } 7.第六步 生成解决方案

ActiveX控件的开发及其工控界面设计

文章编号:1006-1576(2005)03-0105-02 ActiveX控件的开发及其工控界面设计 范艳军,孙力 (华南理工大学自动化科学与工程学院,广东广州 510640) 摘要:ActiveX控件的开发及其工控界面设计,采用VC框架和类向导开发,以MFC ActiveX ControlWizardk自动生成空OCX文件,并将设备作成OCX文件。设备控件外观可通过PHOTOSHOP画出或将设备照片作为资源文件载入控件得到。通过控件的事件,方法和属性以实现控件与工控软件内核的沟通。 关键词:ActiveX控件;工控界面;VC;OCX文件 中图分类号:TP391.9 文献标识码:A Development of ActiveX Control and Design of Industrial Control Interface FAN Yan-jun, SUN Li (College of Automation Science & Engineering, South China University of Technology, Guangzhou 510640, china) Abstract: The ActiveX control is developed and interface of industrial control is designed with the VC frame and guide of class. An empty OCX file was created automatically with MFC ActiveX Controlwizard, and the control of equipment was made into the field OCX. The facade of equipment control was drawn with PHOTOSHOP or the photo of equipment used as VC resource file was loaded control. The communication between control and the kernel of industrial control software is realized through control event, method and attribute. Keywords: ActiveX; Industrial control interface; VC; OCX file 1 引言 为形象的表现控制现场,最好的办法就是让用户界面上的设备具有和真实仪器相似的外观。VC 以其强大、灵活的特点成为主流开发平台。利用其图形图像处理功能可方便开发出与真实设备外观相似的控件,添加必要的事件、方法和属性之后即可通过该控件与控制现场进行交流,以表现控制现场和进行有效控制。作好与现场设备有相似外观的单个控件后,通过基于对象的编程开发工具调用控件,将所作单个设备控件连接,调整各自工作状态,就能反映整个控制现场。 2 ActiveX控件的开发 ActiveX技术是基于COM(组件对象模型)建立起来的编码和API协议,是与平台无关的技术。即在一种编程语言下开发的控件无需修改,就可在另一种编程语言中使用。这与使用Windows通用控件类似。利用VISUAL C++提供的框架向导和类向导可开发OCX文件。使用MFC ActiveX ControlWizardk可自动生成空的OCX文件,每个OCX文件可以含有多个控件。但OCX文件过大不利于容器程序的调用,所以将一类设备制作成一个OCX文件。利用PHOTOSHOP画出工控设备外观,或将实际的工控设备拍照作为资源文件载入控件,作为设备控件外观。然后在OCX文件的ONDRAW 函数里填写代码,其编程方法如下: int w_CBitmap,h_Cbitmap; //定义两个整型变量存储位图的宽和高 Cbitmap Bitmap; //定义位图类 BITMAP BM; //定义BITMAP结构,以获取位图的参数CDC Pdcl; // 定义一个CDC类 Bitmap.Loadmap(IDC_BITMAP); //将位图装载,该位图即是设备外观 Bitmap.GetObject(sizeof(BM)); //得到位图结构 w_CBitmap=BM.bmWidth; w_Cbitmap=BM.bmHeight; Pdcl.CreateCompatibleDC(Pdc); //创建于显示设备场景兼容的CDC对象 Pdcl.SelectObject(&Bitmap); //将位图送入场景 Pdc?StretchBlt (rcBounds.left,rcBounds.top,rcBounds.Width(), rcBounds.Height(), &Pdcl , 0 , 0 ,w_Cbitmap, h_Cbitmap, SRCCOPY); //将位图显示在(0,0)为上端点,宽为rcBounds.Width() //高为rcBounds.Height()的区域内, //其中Pdc,rcBounds为ONDRAW函数的参数Bitmap.DelectObject( ); 其中rcBounds.left为控件左顶点的横坐标,rcBounds.top为控件左顶点的纵坐标,rcBounds.Width(),rcBounds.Height() 为控件的宽与高。通过这段代码将资源号为IDB_BITMAP1位图作为设备外观来显示,工控界面上的设备与现场设备就具有近似的外观,可模拟工作现场。 制作了具有设备外观的静态控件后,还须在工控软件中表现设备的动态工作状态。为此通过MFC ClassWizard添加一个WM_TIMER消息的处理函数 收稿日期:2004-11-08;修回日期:2005-02-24 作者简介:范艳军(1978-),男,山西人,2001年毕业于中北大学,现华南理工大学在读硕士,从事智能控制理论与应用研究。 ·105·

ACTIVEX网页控件开发(详细)

步步学ACTIVEX网页控件开发 转载自IT168 [ https://www.360docs.net/doc/8d3234686.html,/ ] 第1页:创建ActiveX控件 本文将首先介绍如何使用Visual Studio开发一个简单的ActiveX控件,然后介绍ActiveX控件开发相关的基础知识,比如方法,属性和事件等,最后介绍如何利用这些知识,实现ActiveX控件和网页页面之间的通信。 MyActiveX控件的效果图 简介 ActiveX是由Microsoft在90年代中期提出的一项技术。利用ActiveX技术,开发者可以创建像Java小程序applet一样的小型应用程序。这些应用程序可以被下载然后在Microsoft的浏览器中运行。这篇文章是为那些想学习如何开发他们的第一个ActiveX控件的Visual C++开发者准备的。

当我自己尝试学习这些技术的时候,我发现很多针对ActiveX技术的资料都已经不再适用了,都已经过时了,或者丢失了很多关键性的信息,这些都使得我 在为我的项目创建一个ActiveX控件的时候,变得困难重重。这篇文章将帮助你实现ActiveX网页控件开发的快速入门。本文将首先介绍如何使用 Visual Studio开发一个简单的ActiveX控件,然后介绍ActiveX控件开发相关的基础知识,比如方法,属性和事件等,最后介绍如何利用这些知识,实现ActiveX 控件和网页页面之间的通信。 另外,你也将学习到如何在默认的Internet Explorer安全设置下取消掉控件加载过程中的警告或者错误提示,使你的控件成为一个“安全”的ActiveX控件。在本文中,我们将创建一个实际的ActiveX控件。在控件加载的过程中,它将显示一个动态的进度条,告诉用户控件正在加载并处理信息。同时,这个控件 也将展示如何在ActiveX控件和Web页面之间传递信息。本文将引导你一步 步地利用Microsoft Visual Studio 2005完成ActiveX控件的开发工作。 创建ActiveX控件 要创建一个ActiveX控件,首先启动Visual Studio 2005,执行下面这些步骤: 1.选择“文件”菜单,然后选择“新建”->“项目”。 2.在“新建项目”对话框中,如下图1所示,选择“Visual C++”分类下的“MFC”。然后选择“MFC ActiveX控件”作为项目模板。 第2页:添加对动态GIF动画的支持 3.将新项目命名为“MyActiveX”,然后选择项目的保存目录,最后点击“确定” 按钮,关闭“新项目”对话框,进入“MFC ActiveX控件”向导。

使用MFC开发ActiveX(ocx)控件

作者: 中国电波传播研究所青岛分所郎锐 时间: 2004-03-09 出处: yesky 一、前言 二、建立工程框架 三、属性、方法以及事件的添加 四、实现属性表 五、在包容程序中使用ActiveX控件 六、小结 前言 ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一 个控件的COM组件。ActiveX控件这种技术涉及到了几乎所有的COM和OLE的技术精华,如可链接对象、统一数据传输、OLE文档、属性页、永久存储以及OLE 自动化等。 ActiveX控件作为基本的界面单元,必须拥有自己的属性和方法以适合不 同特点的程序和向包容器程序提供功能服务,其属性和方法均由自动化服务的IDispatch接口来支持。除了属性和方法外,ActiveX控件还具有区别于自动化服务的一种特性--事件。事件指的是从控件发送给其包容程序的一种通知。与窗口控件通过发送消息通知其拥有者类似,ActiveX控件是通过触发事件来通知其包容器的。事件的触发通常是通过控件包容器提供的 IDispatch接口来调用 自动化对象的方法来实现的。在设计ActiveX控件时就应当考虑控件可能会发生哪些事件以及包容器程序将会对其中的哪些事件感兴趣并将这些事件包含进来。与自动化服务不同,ActiveX控件的方法、属性和事件均有自定义(custom)和库存(stock)两种不同的类型。自定义的方法和属性也就是是普通的自动化方法和属性,自定义事件则是自己选取名字和Dispatch ID的事件。而所谓的库存方法、属性和事件则是使用了ActiveX控件规定了名字和Dispatch ID的"标准"方法、属性和事件。 ActiveX控件可以使COM组件从外观和使用上能与普通的窗口控件一样, 而且还提供了类似于设置Windows标准控件属性的属性页,使其能够在包容器程序的设计阶段对ActiveX控件的属性进行可视化设置。ActiveX控件提供的这些功能使得对其的使用将是非常方便的。本文下面即以MFC为工具对ActiveX 控件的开发进行介绍。 建立工程框架 通过"MFC ActiveX ControlWizard"向导可以非常容易的建立一个MFC ActiveX控件工程框架。按照默认的选项将建立如图1所示的工程结构:

VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程 开篇语:最近在弄ocx控件发布到https://www.360docs.net/doc/8d3234686.html,网站上使用,就是用户在使用过程中,自动下载安装ocx控件。(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网上发表相关内容的朋友们。) ActiveX控件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载一次后就驻留在用户本地机器上,下次再访问相同的主页时,可不再下载该控件,而是直接运行用户本地的控件。这里控件容器就是浏览器,用户不需要通过浏览器调用控件的属性或方法。因此,开发面向Web 的ActiveX控件比开发桌面的控件还要简单些,所复杂的是如何将该控件很好地嵌入主页,使用户能正常浏览。下面介绍这个问题。 一.创建MFC ActiveX项目 1.打开VS2005新建MFC项目。这里我们取名为“ActiveXDemo”。 2.输入项目名称为“ActiveXDemo”和项目位置。点击“确定”按钮,打开向导对话框。

WoSign 免费提供的时间戳服务URL:https://www.360docs.net/doc/8d3234686.html,/timestamp 时间戳服务非常重要,添加时间戳后,即使您的代码签名证书已经过期,但由于您的代码是在证书有效期内签名的,则时间戳服务保证了此代码仍然可信,最终用户仍然可以放心下载,使得即使代码签名证书已经过期,您也无需重签和重新发布已经签名的代码。 3.选择“控件设置”选项卡,具体设置可参考上图。其它选项卡为默认设置。最后点击“完成”按钮保存设置。 二.添加控件方法 VC2005会为我们自动创建好MFC ActiveX程序框架,我们只要给该ActiveX控件添加方法即可。现在我们给控件添加一个“AddFun”方法,这个方法是将两个数相加并返回结果。 1.点击“视图”,打开“类视图”窗口。

C#生成ocx控件

用C#编写ActiveX控件(一) 前些日子做一个Web项目,必须自己编写一个ActiveX控件。如今的ActiveX控件大多是使用VB/C++来开发的,而我对他们并不熟悉,因此考虑使用熟悉的C#编写ActiveX 控件。 首先,建立一个WinForm控件项目HelloWorld,并拖入一个Label控件,文字设为HelloWorld,如图: UserControl1.cs内容如下: using System; using System.Collections; using https://www.360docs.net/doc/8d3234686.html,ponentModel; using System.Drawing; using System.Data; using System.Windows.Forms; namespace HelloWorld { ///

/// UserControl1 的摘要说明。 /// public class Demo : https://www.360docs.net/doc/8d3234686.html,erControl {

private https://www.360docs.net/doc/8d3234686.html,bel label1; ///

///必需的设计器变量。 /// private https://www.360docs.net/doc/8d3234686.html,ponentModel.Container components = null; public Demo() { // 该调用是 Windows.Forms 窗体设计器所必需的。 InitializeComponent(); // TODO: 在 InitComponent 调用后添加任何初始化 } /// ///清理所有正在使用的资源。 /// protected override void Dispose( bool disposing ) { if( disposing ) { if( components != null ) components.Dispose(); } base.Dispose( disposing ); } 组件设计器生成的代码

C# ACTIVEX控件开发 打包CAB安装部署 含源码及全过程开发文档

1.问题场景 在C/S架构的系统中,客户端要实现某些业务功能,可以通过安装相关的应用程序集来方便的实现。同样的需求,在B/S架构的系统里实现起来却比较困难。因为所有的程序都放在服务器端,客户端只是采用浏览器,通过HTTP协议来访问服务器端。比较成熟的解决办法是开发ActiveX控件安装到客户端,这样客户端的浏览器就可以访问本地的ActiveX控件来执行相关的本地操作。通常开发ActiveX使用C,C++或VB开发,本文将要谈论的,就是使用C#开发一个ActiveX控件。 3.注意的地方,C#开发的ActiveX控件只可在装有Framework的系统上才能用。 2.开发工具 Visual Studio2010 .NET版本:2.0 开发语言:C# 3.ActiveX控件项目创建 (1),新建一个【Windows窗体控件库项目】,项目名为ActiveXDemo 选择.NET Framwork2.0版本,因为.Net2.0安装文件只有20多M,客户端容易接受,而且如今多数家用电脑都装了.Net2.0 (2),需要更改两个地方的设置,选中刚创建的ActiveXDemo项目: 1).右键选择“属性>>应用程序>>程序集信息”设置,勾选“使程序集COM可见”:

2).右键选择“属性>>应用程序>>生成”设置,勾选“为COM互操作注册”(注意,此处如果是在debug 状态下修改的,那么在调到release状态下还需要再设置一次): 4.ActiveX控件功能添加 (1),添加一个用户控件

(2),为了使该用户控件作为一个ActiveX控件进行使用,还需要做以下修改: 首先,为控件类MiugoX.cs添加GUID,这个编号将用于B/S系统的客户端调用时使用(可以使用工具-创建GUID菜单创建一个GUID): [Guid("DF0769A5-99D3-4BE0-90B8-91C65A92118C"),ProgId("ActiveXDemo.MiugoX"),ComVisible(true)] public partial class MiugoX:UserControl,IObjectSafety { …… //DF0769A5-99D3-4BE0-90B8-91C65A92118C就¨a是o?刚?刚?创???建?§的ì?Guid (3),为了让ActiveX控件获得客户端的信任,控件类还需要实现一个名为“IObjectSafety”的接口。先创建该接口(注意,不能修改该接口的GUID值):添加一个接口IObjectSafety,实现该接口的目的就是提高程序的安全性,以便客户端IE在不更改设置的情况下可以预行该ActiveX控件。接口成员如下:using System; using System.Runtime.InteropServices; namespace ActiveXDemo { [ComImport,GuidAttribute("CB5BDC81-93C1-11CF-8F20-00805F2CD064")] [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] public interface IObjectSafety { [PreserveSig] int GetInterfaceSafetyOptions(ref Guid riid,[MarshalAs(UnmanagedType.U4)]ref int pdwSupportedOptions,[MarshalAs(UnmanagedType.U4)]ref int pdwEnabledOptions); [PreserveSig()]

Delphi快速开发OCX步骤

Delphi快速开发OCX步骤 首先要弄明白你要写的OC X是用在客户端还是用在服务器端 假如用在客户端: 1、创建 打开delphi 7,选择菜单“new”->“other”->“activex”->“active form”->输入项目名称,系统自动给你创建了3个文件,一个是项目文件,一个是form的单元文件,还有一个后缀带TLB 的文件。这三个文件中的你只需要更改form的单元文件,项目文件一般不需要写什么,TLB文件有系统自动维护。 2、增加接口函数 所谓接口函数就是调用OCX的程序可以直接调用的函数,如果你要写的函数不提供外部函数可以按常规声明就可以。但要声明接口函数则必须按步骤声明,有两种途径, 其一:选择form单元文件,然后点击“edit”->“add to interface”,弹出一个对话框,输入要声明的函数,如:function fun:integer; 其二:选择form单位文件,然后点击“view”->“Type Library”,弹出一个对话框,然后点击工具栏中“add a interface”可以增加函数或过程。 说明:在这里注意几个地方, 第一,一定要选form文件才可以,否则相应的菜单都是不可用的; 第二、声明函数或过程的参数类型要注意string->BSTR(第二种途径)或WideString(第一种途径)。增加属性也函数类同。 3、调试 我是用html调试的,所以可用在delphi种配置run的参数“run”->“parametes”,弹出一对话框,在“host application”中输入C:\Program Files\Internet Explorer\IEXPLORE.EXE,在“parametes”中http://192.168.6.9/my.htm,这样就可以调试delphi代码了 4、发布 在没有build前,可以“project”->“web deployment”中配置(主要输入ocx的地址和web 服务器的url),然后可以“web deploy”发布,其实就是生成了一个htm文件,不过该文件里包含了调用方法而已。但是delphi好像至运行执行一次,发布后这两个菜单就不可用

用C#编写ActiveX控件

您正在看的C#.NET教程是:用C#编写ActiveX控件。 首先,建立一个WinForm控件项目HelloWorld,并拖入一个Label控件,文字设为HelloWorld,如图: UserControl1.cs内容如下: using System; using System.Collections; using https://www.360docs.net/doc/8d3234686.html,ponentModel; using System.Drawing; using System.Data; using System.Windows.Forms; namespace HelloWorld { /**////

/// UserControl1 的摘要说明。 /// public class Demo : https://www.360docs.net/doc/8d3234686.html,erControl { private https://www.360docs.net/doc/8d3234686.html,bel label1; /**//// /// 必需的设计器变量。 /// private https://www.360docs.net/doc/8d3234686.html,ponentModel.Container components = null; public Demo() { // 该调用是Windows.Forms 窗体设计器所必需的。 InitializeComponent(); // TODO: 在InitComponent 调用后添加任何初始化 } /**//// /// 清理所有正在使用的资源。

///

protected override void Dispose( bool disposing ) { if( disposing ) { if( components != null ) components.Dispose(); } base.Dispose( disposing ); } 组件设计器生成的代码#region 组件设计器生成的代码 /**//// /// 设计器支持所需的方法- 不要使用代码编辑器 /// 修改此方法的内容。 /// private void InitializeComponent() { &nb 您正在看的C#.NET教程是:用C#编写ActiveX控件。sp; https://www.360docs.net/doc/8d3234686.html,bel1 = new https://www.360docs.net/doc/8d3234686.html,bel(); this.SuspendLayout(); // // label1 // https://www.360docs.net/doc/8d3234686.html,bel1.Location = new System.Drawing.Point(32, 32); https://www.360docs.net/doc/8d3234686.html, = "label1"; https://www.360docs.net/doc/8d3234686.html,bel1.Size = new System.Drawing.Size(120, 32); https://www.360docs.net/doc/8d3234686.html,bel1.TabIndex = 0; https://www.360docs.net/doc/8d3234686.html,bel1.Text = "HelloWorld"; https://www.360docs.net/doc/8d3234686.html,bel1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // Demo //

ocx控件开发过程

目录 1. 参考资料: (2) 2. 控件制作过程: (2) 3.控件进行打包并进行数据鉴名 (3) 4. 写html,完成程序 (5) 1 / 5

1.参考资料: (1)利用VC6.0的向导创建一个ocx控件的示例 (2)vc6<实用>开发activex并发布全攻略(二)(初级篇) 网址:https://www.360docs.net/doc/8d3234686.html,/ibznphone/article/details/8066322 2. 控件制作过程: (1) 打开vc6.0,新建一个MFC ActiveXControlWizard项目: (2) 在项目中添加自定义方法sayhello

(3)对项目进行测试 打开vc的工具->ActiveX Control Test Container菜单。选择MyActivex控件,然后再选择Control->InvokeMethods选项: 可以看到返回值是“hello!”,系统sayhello函数是可以使用的。 注:最后在html加载控件需要classid,此控件classid为7F8BB7A3-A741-4E53-A620-5442A789D7B5。 3.控件进行打包并进行数据鉴名 (1) 控件制作完毕并不能直接使用,而是需要注册,手动注册的方法不必赘述,我参考本文 3 / 5

列的第二篇参考资料用makeCAB工具包进行处理。下图为各种证书文件和cab打包文件生成后的情景。 (2) 使用makeCAB工具包中的Code Signing Wizard签署CAB文件 细节就不写了,详细在参考资料2,后面的个图为签名成功的截图。

OCX控件编写

OCX控件 新建->项目->MFCActiveX 完成后编译器自动添加四个类。 型如: 一.事件的添加方法: 1.常用事件 右键Ctrl类->添加->添加事件->常用事件(Click事件为例)

在其他程序调用控件时在控件事件中就可以添加Click事件。在点击新建的对话框中的控件时就会执行Click事件函数。 如下图 2.自定义方法 右键.lib类的第一个节点->添加方法

添加后在其他程序调用控件时就可以给控件添加变量并调用方法。 二.添加属性 以背景色为例,右键Lib类的第一个节点,添加属性,选择常用属性中的BackColor属性(当然也可以自定义属性): 在Listcpp中手动添加属性页代码: 在OnDraw手动添加: 其中上图圈出部分为手动添加的代码,用于当控件被调用时打开改控件的颜色属性面板改变控件的颜色。而COLORREF col=TranslateColor(GetBackColor);这行代码实现了获取下图颜色面板的颜色并返回给col;

如何在新程序中添加控件并实时改变控件的GDI?方法:右键xxxlib文件的第一节点添加方法; 完成后在xxxCtrl.cpp文件会添加该函数,例如:void Cocx004Ctrl::myfun1(DOUBLE parag) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); if(parag>250) {

parag=0; } CDC*dc=GetDC(); CRect rec; GetClientRect(&rec); CBrush bru; CPen pen; pen.CreatePen(PS_SOLID,4,RGB(100,parag,100)); dc->SelectObject(&pen); bru.CreateSolidBrush(RGB(parag,100,100)); dc->SelectObject(&bru); dc->MoveTo(rec.left,rec.top); dc->LineTo(rec.right,rec.bottom); dc->Ellipse(&rec); ReleaseDC(dc); //TODO:在此添加调度处理程序代码 } 以上代码实现了控件的简单绘图 注:默认属性中除颜色属性外还有字体等属性,这儿未整理。

从ocx控件编写到发布到网上全过程

VC6.0从开发activex ocx控件到发布到网上全过程 (sunxiaopeng) ActiveX控件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载一次后就驻留在用户本地机器上,下次再访问相同的主页时,可不再下载该控件,而是直接运行用户本地的控件。 一:vc创建activex控件 创建一个activex控件,名称为:test.ocx,创建步骤略。显示结果如下: 为该控件增加一个方法void GetStr(LPCTSTR str), 该方法内部代码如下:

这样,GetStr方法就被加入了。 onDraw函数下代码如下 下面,测试该方法,鼠标右键控件,选择Invoke Methods,弹出如下对话框: 在parameter中输入hello,单击Invoke按钮,显示如下:

那么如何在网页中将参数传递给控件,让其在网页中显示出来呢??稍后介绍 把test.ocx控件放入c:\ceshi目录下,到网上下载Makecert.exe,Cert2Spc.exe,Signcode.exe,并一同放入c:\ceshi目录下 二:ActiveX打包与发布 1)用到的工具如下所示: 1.Makecert.exe ---证书创建工具 2.Cert2Spc.exe ---发行者证书测试工具 3.Signcode.exe ---文件签名工具 2)ActiveX发布步骤 打包activeX需要制作证书,具体用到makecert 、cert2spc 、signtool这三个工具, 现在我们将以上工具和.ocx控件放到同一个目录c:\test下. (1)单击"开始"-->"运行(R)"-->输入"cmd"-->回车-->进入到操作的控件所在的目录(需要将上面所说的工具,和ocx控件放到一个文件夹下); (2)创建inf文件,代码如下 [version] signature="$CHICAGO$" AdvancedINF=2.0 [Add.Code] test.ocx=test.ocx [test.ocx] file-win32-x86=thiscab RegisterServer=yes clsid={B649E664-D7CF-4481-A58E-AC8B4440794A} DestDir=11 FileVersion=1,0,0,1 上述代码解释如下: file-win32-x86=thiscab //告诉ie到哪里去得到这个dll,file一共包括三个部分,第一部分是file,这个永远都是这样的(至少目前来说);第二部分告诉声明支持的OS,win32表示windows,mac 就是苹果MAC OX了;第三部分是CPU类型,比如说x86、 ppc (Power PC)、 mips 或者alpha了。其中“thiscab”是一个关键字,表示 CAB 包含此 DLL,也可通过指定一条绝对或相对路径,从一个 HTTP 位置下载所需的 DLL, 例如: file-win32-x86=https://www.360docs.net/doc/8d3234686.html,/mydir/NEEDED.DLL clsid={ B649E664-D7CF-4481-A58E-AC8B4440794A } //“clsid”是将要安装的控件的 CLSID ,如何获得呢------ DestDir=11

Ocx控件使用入门

Ocx控件使用入门 1基本说明 使用VS进行ocx控件开发 使用html页面进行ocx控件测试,即将ocx控件嵌入到html页面中 2使用环境 Window 7 Visual Studio 2010 中文旗舰版,即VS2010 VAssistx 3编码过程 3.1创建工程(Project) 1、启动VS2010; 2、点击“文件→新建→项目(P)…”,输入名称[activexdemo]和路径[此处为默认],点 击“确定”,打开向导对话框;

3、一直点击“下一步”,知道出现下图界面,并按照下图进行配置; 4、点击“完成”;

5、在“解决方案视图”中,选择工程,右击→属性,弹出“属性页”对话框,在对话 框中按下图进行配置,点击“确定”,返回VS2010主界面;

6、在“解决方案视图”中,找到“activexdemo.rc”,并进行下图操作; BEGIN BLOCK"StringFileInfo" BEGIN

BLOCK"040904e4" BEGIN VALUE"CompanyName", "TODO: <公司名>" VALUE"FileDescription", "TODO: <文件说明>" VALUE"FileVersion", "1.0.0.1" VALUE"InternalName", "activexdemo.ocx" VALUE"LegalCopyright", "TODO: (C) <公司名>。保留所有权利。" VALUE"OriginalFilename", "activexdemo.ocx" VALUE"ProductName", "TODO: <产品名>" VALUE"ProductVersion", "1.0.0.1" VALUE"OLESelfRegister", "" END END BLOCK"VarFileInfo" BEGIN VALUE"Translation", 0x409, 1252 END END 8、此时,工程创建成功。 3.2添加控件方法 1、在“类视图”中,按照下图方法操作; 2、点击“添加方法”后,在弹出的对话框中进行如下图配置,点击“完成”;

C#开发OCX IE控件

c# 开发Active控件 首先,建立一个WinForm控件项目MyActive,并拖入一个Lable控件,文字设为HelloWorld,如图: 此时编译项目,可以生成MyActive.dll,将些dll拷贝到IIS的虚拟根目录下,然后建立一个网页文件test.html,此网页文 件的代码如下: 测试测试 然后在IE地址栏中输入以下地址:http://localhost/mp/test.html,我们看到出现如下界面: 此时,我们的控件第一步就已经完成了! 但此时还未完在,只能在本机显示正常,如果换另一台机子就出显示一个红叉,或者弹出对话框说这个控件没有任何权限,所以必须声明这个控件必须使用赋予的权限,才可以显示出界面. 我们在AssemblyInfo.cs中引用System.Security命名空间,并添加一句[assembly : AllowPartiallyTrustedCallers()]

使用ActiveX控件用于web开发

ActiveX控件的Web开发使用注意事项 ActiveX控件经常运用于Web开发中,在最近国联项目的二次开发任务:FakeDNS+ActiveX 插件安全检查中,涉及到了部分与ActiveX插件联动与配合使用的功能。现将开发过程中遇到的部分问题与心得分享如下,以便大家在以后的工作中参考。 ActiveX是微软的东西,故而这玩意儿只有IE才支持!类似于Java的Applet 1、如何判断当前客户端是否安装相关的ActiveX控件? Js代码: try{ var obj = new ActiveXObject("SECURITYCHECKAX.SecurityCheckAXCtrl.1"); }catch(e){ alert(‘未安装插件’) } ActiveXObject中的字符串是取自插件注册后注册表中的ProgID值。如下图所示:

2、页面如何使用ActiveX插件? 在需要使用插件的页面(html或者jsp)中,添加如下代码: 注:version后面的版本号,中间的符号是, 不是. 3、如何在客户端装载插件? 本次的插件开发中,将ActiveX插件打包成了cab包和exe程序两种格式(注:插件程序在注册的时候必须设置为安全脚本)。 当页面引用了上述代码后,若客户端未安装插件,则会自动弹出安装提示信息,如下图所示: 点击右键安装后,刷新当前页面即可 采用exe插件安装包的目的:由于IE浏览器的插件安装提示是自动弹出的,不排除某些原

步步学ACTIVEX网页控件开发

步步学ACTIVEX网页控件开发 本文将首先介绍如何使用Visual Studio开发一个简单的ActiveX控件,然后介绍Ac tiveX控件开发相关的基础知识,比如方法,属性和事件等,最后介绍如何利用这些知识,实现ActiveX控件和网页页面之间的通信。 MyActiveX控件的效果图 简介 ActiveX是由Microsoft在90年代中期提出的一项技术。利用ActiveX技术,开发者可以创建像Java小程序applet一样的小型应用程序。这些应用程序可以被下载然后在M icrosoft的浏览器中运行。这篇文章是为那些想学习如何开发他们的第一个ActiveX控件的Visual C++开发者准备的。

当我自己尝试学习这些技术的时候,我发现很多针对ActiveX技术的资料都已经不再适用了,都已经过时了,或者丢失了很多关键性的信息,这些都使得我在为我的项目创建一个ActiveX控件的时候,变得困难重重。这篇文章将帮助你实现ActiveX网页控件开发的快速入门。本文将首先介绍如何使用Visual Studio开发一个简单的ActiveX控件,然后介绍ActiveX控件开发相关的基础知识,比如方法,属性和事件等,最后介绍如何利用这些知识,实现ActiveX控件和网页页面之间的通信。 另外,你也将学习到如何在默认的Internet Explorer安全设置下取消掉控件加载过程中的警告或者错误提示,使你的控件成为一个“安全”的ActiveX控件。 在本文中,我们将创建一个实际的ActiveX控件。在控件加载的过程中,它将显示一个动态的进度条,告诉用户控件正在加载并处理信息。同时,这个控件也将展示如何在Act iveX控件和Web页面之间传递信息。本文将引导你一步步地利用Microsoft Visual St udio 2005完成ActiveX控件的开发工作。 创建ActiveX控件 要创建一个ActiveX控件,首先启动Visual Studio 2005,执行下面这些步骤: 1.选择“文件”菜单,然后选择“新建”->“项目”。 2.在“新建项目”对话框中,如下图1所示,选择“Visual C++”分类下的“MFC”。然后选择“MFC ActiveX控件”作为项目模板。 3.将新项目命名为“MyActiveX”,然后选择项目的保存目录,最后点击“确定”按钮,关闭“新项目”对话框,进入“MFC ActiveX控件”向导。

VB开发ActiveX控件步骤

VB开发ActiveX控件步骤: 1、创建一个ActiveX Control的项目 2、绘制ActiveX控件的操作界面,并且编写代码 3、特别注意:在项目的属性上的Make页,有一个Version Number区域,需要你写当前控件的版本号,这个地方和自动下载有密切关系!当你远端的Web浏览器检查到本机的控件版本号和服务器上不一样的时候,浏览器就会自动从服务器下载新版本控件进行安装,所以你编译的新版本控件一定要改版本号!否则可能导致远程无法更新。 4、编译ActiveX控件 ActiveX控件打包步骤: 本例子以Studio 6.0自带的打包工具为例。 1、选择当前选用的VB ActiveX项目进行打包。 2、其中在选择Package Type的时候有3个选项: 1)Standard setup package 2)Internet Package 3)Dependency File 选择第二个! 3、到选择File Source的时候有3个选项: 1)Include in this cab 2)download from microsoft web site 3)download from alternate web site 以上选项是针对程序包含的每一个相关dll,ocx的,所以,如果你要修改参数,需要一个个文件设置! 我建议是都选择第一项!因为有些控件从外部更新,可能会遇见证书之类的问题,可能导致你的程序无法使用,因此,全部使用本地的是最省心的选择!打包过程的其他步骤,没有特别说明的,全部用默认设置! 4、在发布控件的网站根目录下建一个目录,就叫ActiveX吧,把打包装后的Package 目录中的所有文件复制到ActiveX目录。

相关主题