Dep hi 实现屏幕录像 delphi 利用VFW 函数实现录制屏幕的功能: 1.通过Timer 实现抓屏,将屏幕抓图存为BMP 格式。 2.调用AVIFileInit 初始化 3.调用AVIFileOpen 创建视频文件 4.调用AVIFileCreateStream 创建视频流 5.调用AVIMakeCompressedStream 压缩视频流 6.调用AVIStreamSetFormat 设置视频流格式 7.调用AVIStreamWrite 写入视频 8.调用AVIStreamClose 关闭视频流指针,AVIFileRelease 释放视频文件,AVIFileExit 关闭视频文件。 源码: 1.抓屏存为BMP //抓屏幕, Flag = SRCCOPY,不抓透明窗口,Flag=SRCCOPY or CAPTUREBLT抓透明窗口 //CAPTUREBLT 要自己定义 //const //{$ifndef CAPTUREBLT} // CAPTUREBLT = $40000000; //{$endif} var ScreenBmp: TBitmap; PicIndex: Integer; //图片序号 RecTransFlag: Cardinal; //录制屏幕标志,是否录制透明窗体 AppPath: string; //应用程序路径 TempPath: string; //临时文件夹路径 BmpFileName: string; //BMP 文件存储路径 procedure TForm1.FormCreate(Sender: TObject); begin PicIndex := 0; BmpFileName := ''; ScreenBmp := TBitmap.Create; ScreenBmp.PixelFormat := pf24bit; ScreenBmp.Width := Screen.Width; ScreenBmp.Height := Screen.Height; ScreenBmp.Canvas.Brush.Style := bsClear; RecPause := False; //不录制透明窗体 RecTransFlag := SRCCOPY; //录制透明窗体 //RecTransFlag := SRCCOPY or CAPTUREBLT; AppPath := ExtractFilePath(Application.ExeName); TempPath := AppPath + 'Temp\'; if not DirectoryExists(TempPath) then CreateDirectory(PAnsiChar(TempPath), nil); end; procedure TForm1.DrawCursorToBmp(var ScrBmp: TBitmap); var hCur : HICON; MousePt: TPoint; begin if not Assigned(ScrBmp) then Exit; hCur := GetCursor(); GetCursorPos(MousePt); // 画 光 标 DrawIcon(ScrBmp.canvas.handle, MousePt.x, MousePt.y, hCur); end; procedure TForm1.Timer1Timer(Sender: TObject); var dc: HDC; begin DC := GetDC(0); try BitBlt(ScreenBmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, dc, 0, 0, Flag); finally ReleaseDC(0, dc); end; //根据标记判断是否画上...