花了一百块钱买的USB摄像头除了跟几个好友聊视频外,往常就不时处于闲置形态。一日我突发奇想:能不能用它来做个视频监督报警系统,经过自己一段期间的钻研发现还真是可以,只需经常使用C++ Builder6就很容易成功这个配置,而且成果还是不错的,如今就把自己的心得和大家分享一下!介绍文章一、创立窗体创立窗体Form1,将它调整到适当大小,在上方放上Panel1、Label1、StatusBar1、ScrollBar1、GroupBox1、Memo1、Button1、Button2和Timer1控件,将Button1的caption属性改为“启动摄像头”,Button2的Captio n属性改为“开局监控”,Label1的Caption改为“灵便度”,修正Timer1的Enabled为false,Interval为500,修正ScrollBar1的Min为100,Max为1000。二、参与头文件清扫尾文件:Unit1.h,为它参与两个头文件:#include "jpeg.hpp"#include "vfw.h"修正private段如下:private: // User declarationsCAPDRIVERCAPS gCapDrvCaps;int sizef,sizetemp,jd;int __fastcall getfiles();void __fastcall scanpic();三、参与函数关上Unit1.cpp文件,参与两个函数:void __fastcall TForm1::scanpic(){Graphics::TBitmap *Bitmap=new Graphics::TBitmap;TJPEGImage *jmp= new TJPEGImage;Bitmap->Width=Form1->Panel1->Width;Bitmap->Height=Form1->Panel1->Height;Bitmap->PixelFormat=pf32bit;::BitBlt(Bitmap->Canvas->Handle,Form1->Panel1->Left,Form1->Panel1->Top,Form1->Panel1->Width,Form1->Panel1->Height, Form1->Canvas->Handle,0,0,SRCCOPY);// Bitmap->SaveToFile("tu.bmp");jmp->Assign(Bitmap);jmp->Compress();jmp->SaveToFile("temp.jpg");delete jmp;delete Bitmap;}//-----------------int __fastcall TForm1::getfiles(){HANDLE HMyFile=::CreateFile("aa.jpg",GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);double sized=(double)::GetFileSize((void *)HMyFile,NULL);CloseHandle(HMyFile);return sized;}四、为按钮参与代码双击Button1按钮,为它参与OnClick事情代码如下:HWND capWin = capCreateCaptureWindow ((LPSTR) "Video Windows",WS_CHILD | WS_VISIBLE,Panel1->Left,Panel1->Top,Panel1->Width,Panel1->Height,(HWND) Handle,1);if(capDriverConnect(capWin,0)){capDriverGetCaps(capWin,&gCapDrvCaps,sizeof(CAPDRIVERCAPS));if(gCapDrvCaps.fCaptureInitialized){capPreviewRate(capWin,66);capPreview(capWin,TRUE);}else{StatusBar1->SimpleText="摄像头初始化失败!";}}else{StatusBar1->SimpleText="摄像头衔接不成功!";}双击Button2为它参与OnClick事情代码如下:jd=ScrollBar1->Position;scanpic();sizef=getfiles();Timer1->Enabled=true;双击ScrollBar1为它参与OnChange事情如下:jd=ScrollBar1->Position;双击Timer1为它参与OnTimer事情如下:scanpic();sizetemp=getfiles();if(abs(sizetemp-sizef)>jd){AnsiString fp;DateTimeToString(fp,"yyyy'年'mm'月'dd'日'mm'分'ss'秒'",Now());Memo1->Lines->Add("有人偷苹果!"+fp+IntToStr(sizetemp));//发生报警日志sndPlaySound("xx.wav",SND_ASYNC);//播放警报声}五、设置报警声在程序目录上方放上你青睐听到的报警声响,并将声响文件命名为xx.wav,运转程序,点击“启动摄像头”将摄像头对准桌面上的苹果,当画面基本稳固时再按“开局监控”。Www.iTCompuTEr.COM.CN这时你偷偷地把手伸过去抓苹果,是不是报警了?雷同你还可以将摄像头对准你房间的门,防止你在目不转睛地玩电脑时,有人突然窜到你的面前威吓你,在经常使用环节中还可以恣意调整监督系统的灵便度。
如何肃清ie地址栏 Q:我知道在“HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\TypedUrls”中,删除右侧窗格中的一切“url+数字”项,即可把IE这些键所有删除掉。然而,这样做难免太费事了。请问,有什么方法可以提高肃清的效率?介绍文章A:应用注册表的删除配置,就齐全可以轻松处置这个疑问。在注册表当选用“TypedURLs”分支并口头“导出”操作,接着,用记事本打劝导出的reg文件,在其中的“[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\TypedURLs]”语句前加“-”符号,即改成:[-HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\TypedURLs]。成功修正并保留文件后,以后要删除TypedURLs下的一切键,只须双击此reg文件即可。 word中的空行如何删除日常上班中在网上找到了一些文字资料,想要把文字拷贝上去,可是从网页上拷贝上去的文字在粘贴到文本编辑器上时,就会在段落与段落之间多出很多空行。若手动删除这些空行,既费时又费事。对于这个疑问的几种处置方法网上也有引见,都各无利害,上方我就引见另外的两种编写代码的处置方法,效率更高。介绍文章一、经常使用Word的宏假设拷贝上去的文字里有延续的多行空行,或许在有些空行里还有数量不等的空格字符,无妨让Word的宏来一显本领。创立一个宏,取名为DBL。代码及注释如下:Sub DBL()i = 1Do'从以后文档的顶端开局逐个选用文档的每一段文字ActiveDocument.Paragraphs(i).Range.SelectIf Trim(Selection.Text) = Chr(13) Then'假设选用的段落里只要回车符和空格则删除此段Selection.DeleteElse'假设选用的段落非空,就将选用的指针移向下一段Selection.MoveDowni = i + 1End IfLoop Until i = ActiveDocument.Paragraphs.CountEnd Sub写好了宏程序之后,可以把刚才建好的宏拖拽到快捷工具栏上,做好以后,假设须要从网页上拷贝文字到Word上编辑时,只需单击一次性这个宏按钮,即可瞬间删除整篇文档里的空行了。二、经常使用网页脚本言语假设电脑上用的文字处置工具是金山WPS系列的字处置软件,而没有装置Word和UltraEdit等软件时,无妨试试借助一下微软的网页脚本言语(VBScript)来处置删除空行的疑问。如今绝大局部的机器上装的操作系统都是Windows,普通办公室里的机器都可以口头。脚本程序要成功的义务不同于上方的Word宏。首先要把从网页上复制上去的文字粘贴到一个文本文件(以下简称A文件)里保留。脚本程序要做的事情是在程序口头时再创立一个文本文件(以下简称B文件),从A文件里逐行读取文字,并把非空行的文字内容写入到B文件里。这样,B文件里就没有空行了。新建一个文本文件,把文件的裁减名改为.vbs。在记事本里关上该文件并输入脚本代码,代码及注释如下:Const ForReading = 1, ForWriting = 2, TristateUseDefault = -2Dim fsoA, fA, tA, fsoB, fB, tB, s, dir'假设脚本程序和A文件在同一目录下,间接输入A文件的文件名和裁减名即可dir=inputbox("请输入源文件的门路或相对门路:")if dir<>"" then'初始化A文件的对象Set fsoA = CreateObject("Scripting.FileSystemObject")Set fA = fsoA.GetFile(dir)Set tA = fA.OpenAsTextStream(ForReading, TristateUseDefault)'创立并初始化B文件的对象Set fsoB = CreateObject("Scripting.FileSystemObject")fsoB.CreateTextFile("_"+dir)Set fB = fsoB.GetFile("_"+dir)Set tB = fB.OpenAsTextStream(ForWriting, TristateUseDefault)'逐行读A文件并把非空行写入B文件while not tA.AtEndOfStreams=tA.ReadLineif trim(s)<>"" then tB.WriteLine swend'封锁文件对象tB.ClosetA.Closeend if脚本文件代码写好之后,保留,分开记事本。上方就可以用写好的脚本文件来删除空行了。用鼠标双击脚本文件即可口头程序。当程序口头成功之后就会智能发生一个在A文件名前加了一个下划线作为文件名的新文件,关上看看吧,外面的空行早被一扫而光。