Radmin的抓屏和显屏API代码部分分析
2007-06-25 09:29
351 查看
分析了Radmin的抓屏和显屏API代码,抓屏它采用的是逐行扫描,显屏它采用的是全屏显示。就是不知道他使用的什么压缩,他发送时好像没有用内存XOR运算发送不同的数据,但不知道他使用什么压缩方法发送的。
r_server
SRCCOPY = $00CC0020; { dest = source
function CreateDCA(lpszDriver, lpszDevice, lpszOutput: PAnsiChar;
lpdvmInit: PDeviceModeA): HDC; stdcall;
lpszDriver 'DISPLAY'
lpszDevice nil
lpszOutput nil
lpdvmInit nil
function GetDeviceCaps(DC: HDC; Index: Integer): Integer; stdcall;
DC CreateDCA 的返回值
Index RASTERCAPS = 38; { Bitblt capabilities
function CreateCompatibleDC(DC: HDC): HDC; stdcall;
DC CreateDCA 的返回值
function GetDeviceCaps(DC: HDC; Index: Integer): Integer; stdcall;
DC CreateDCA 的返回值
Index HORZRES = 8; { Horizontal width in pixels
function GetDeviceCaps(DC: HDC; Index: Integer): Integer; stdcall;
DC CreateDCA 的返回值
Index VERTRES = 10; { Vertical height in pixels
function CreateCompatibleBitmap(DC: HDC; Width, Height: Integer): HBITMAP; stdcall;
DC CreateDCA 的返回值
Width GetDeviceCaps HORZRES的返回值
Height 0x00000001
function GetObjectA(p1: HGDIOBJ; p2: Integer; p3: Pointer): Integer; stdcall;
p1 CreateCompatibleBitmap 的返回值
p2 ?24
p3 ?
function GetDeviceCaps(DC: HDC; Index: Integer): Integer; stdcall;
DC CreateCompatibleDC 的返回值
Index RASTERCAPS = 38; { Bitblt capabilities
function GetDeviceCaps(DC: HDC; Index: Integer): Integer; stdcall;
DC CreateCompatibleDC 的返回值
Index BITSPIXEL = 12; { Number of bits per pixel
function CreateBitmap(Width, Height: Integer; Planes, BitCount: Longint;
Bits: Pointer): HBITMAP; stdcall;
Width 5
Height 1
Planes 1
BitCount 10
Bits 0
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; stdcall;
DC CreateCompatibleDC 的返回值
p2 CreateBitmap 的返回值
function SetPixel(DC: HDC; X, Y: Integer; Color: COLORREF): COLORREF; stdcall;
DC CreateCompatibleDC 的返回值
X 0x00000000
Y 0x00000000
Color 0x000000FF
function GetBitmapBits(Bitmap: HBITMAP; Count: Longint;
Bits: Pointer): Longint; stdcall;
Bitmap CreateBitmap 的返回值
Count 0x00000002
Bits
function SetPixel(DC: HDC; X, Y: Integer; Color: COLORREF): COLORREF; stdcall;
DC CreateCompatibleDC 的返回值
X 0x00000000
Y 0x00000000
Color 0x0000FF00
function GetBitmapBits(Bitmap: HBITMAP; Count: Longint;
Bits: Pointer): Longint; stdcall;
Bitmap CreateBitmap 的返回值
Count 0x00000002
Bits
function SetPixel(DC: HDC; X, Y: Integer; Color: COLORREF): COLORREF; stdcall;
DC CreateCompatibleDC 的返回值
X 0x00000000
Y 0x00000000
Color 0x00FF0000
function GetBitmapBits(Bitmap: HBITMAP; Count: Longint;
Bits: Pointer): Longint; stdcall;
Bitmap CreateBitmap 的返回值
Count 0x00000002
Bits
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; stdcall;
DC CreateCompatibleDC 的返回值
p2 SelectObject 的返回值
function DeleteObject(p1: HGDIOBJ): BOOL; stdcall;
p1 CreateBitmap 的返回值
function CreateCompatibleBitmap(DC: HDC; Width, Height: Integer): HBITMAP; stdcall;
DC CreateDCA 的返回值
Width 0x00000400
Height 0x00000015
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; stdcall;
DC CreateCompatibleDC 的返回值
p2 CreateCompatibleBitmap 的返回值
function BitBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC;
XSrc, YSrc: Integer; Rop: DWORD): BOOL; stdcall;
DestDC CreateCompatibleDC 的返回值
X 0x00000000
Y 0x00000000
Width 0x00000400
Height 0x00000001 变
SrcDC CreateDCA 的返回值
XSrc 0x00000000 变
YSrc 0x0000000F 变
Rop SRCCOPY
function GetDIBits(DC: HDC; Bitmap: HBitmap; StartScan, NumScans: UINT;
Bits: Pointer; var BitInfo: TBitmapInfo; Usage: UINT): Integer; stdcall;
DC CreateCompatibleDC 的返回值
Bitmap CreateCompatibleBitmap 的返回值
StartScan 0x00000000
NumScans 0x00000001
Bits
BitInfo
Usage 0x00000000
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; stdcall;
DC CreateCompatibleDC 的返回值
p2 CreateCompatibleBitmap 的返回值
function DeleteDC(DC: HDC): BOOL; stdcall;
DC CreateDCA 的返回值
function DeleteDC(DC: HDC): BOOL; stdcall;
DC CreateCompatibleDC 的返回值
function DeleteObject(p1: HGDIOBJ): BOOL; stdcall;
p1 SelectObject 的返回值
radmin
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; stdcall;
DC
p2
function ExtCreateRegion(XForm: PXForm; Count: DWORD; const RgnData: TRgnData): HRGN; stdcall;
XForm nil 单元转换
Count 数据大小
RgnData 数据
function SelectClipRgn(DC: HDC; Region: HRGN): Integer; stdcall; -> ->
DC SelectObject 的DC
Region ExtCreateRegion 的返回值
返回值 COMPLEXREGION = 3
function SetDIBitsToDevice(DC: HDC; DestX, DestY: Integer; Width, Height: DWORD;
SrcX, SrcY: Integer; nStartScan, NumScans: UINT; Bits: Pointer;
var BitsInfo: TBitmapInfo; Usage: UINT): Integer; stdcall;
DC SelectObject 的DC
DestX 0 服务端屏幕X
DestY 0 服务端屏幕Y
Width $320 服务端屏幕Width
Height $258 服务端屏幕Height
SrcX 0
SrcY 0
nStartScan 0
NumScans $258
Bits 数据?
BitsInfo
Usage 不知道DIB_RGB_COLORS
function SelectClipRgn(DC: HDC; Region: HRGN): Integer; stdcall; ->
DC SelectObject 的DC
Region 0
返回值 SIMPLEREGION = 2
function DeleteObject(p1: HGDIOBJ): BOOL; stdcall;
p1 ExtCreateRegion 的返回值
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; stdcall;
DC 原 SelectObject 的DC
p2 上一个 SelectObject 的返回值
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; stdcall;
DC 原 SelectObject 的DC
p2 上一个 SelectObject 的返回值
普通模式
function BitBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC;
XSrc, YSrc: Integer; Rop: DWORD): BOOL; stdcall;
DestDC
X 0 服务端屏幕X
Y 0 服务端屏幕Y
Width $320 服务端屏幕Width
Height $258 服务端屏幕Height
SrcDC 上一个 SelectObject 的返回值 = 上一个 SelectObject 的DC= 原 SelectObject 的DC
XSrc 0
YSrc 0
Rop SRCCOPY
伸拉模式
function SetStretchBltMode(DC: HDC; StretchMode: Integer): Integer; stdcall;
DC
StretchMode
function StretchBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC;
XSrc, YSrc, SrcWidth, SrcHeight: Integer; Rop: DWORD): BOOL; stdcall;
DestDC
X
Y
Width
Height
SrcDC
XSrc
YSrc
SrcWidth
SrcHeight
Rop
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; stdcall;
DC 上一个 SelectObject 的返回值 = 上一个 SelectObject 的DC= 原 SelectObject 的DC
p2 上一个 SelectObject 的返回值
上面是Radmin和R_server所用抓屏和显屏的API函数
某网友的分析,我还不知如何分析
r_server
SRCCOPY = $00CC0020; { dest = source
function CreateDCA(lpszDriver, lpszDevice, lpszOutput: PAnsiChar;
lpdvmInit: PDeviceModeA): HDC; stdcall;
lpszDriver 'DISPLAY'
lpszDevice nil
lpszOutput nil
lpdvmInit nil
function GetDeviceCaps(DC: HDC; Index: Integer): Integer; stdcall;
DC CreateDCA 的返回值
Index RASTERCAPS = 38; { Bitblt capabilities
function CreateCompatibleDC(DC: HDC): HDC; stdcall;
DC CreateDCA 的返回值
function GetDeviceCaps(DC: HDC; Index: Integer): Integer; stdcall;
DC CreateDCA 的返回值
Index HORZRES = 8; { Horizontal width in pixels
function GetDeviceCaps(DC: HDC; Index: Integer): Integer; stdcall;
DC CreateDCA 的返回值
Index VERTRES = 10; { Vertical height in pixels
function CreateCompatibleBitmap(DC: HDC; Width, Height: Integer): HBITMAP; stdcall;
DC CreateDCA 的返回值
Width GetDeviceCaps HORZRES的返回值
Height 0x00000001
function GetObjectA(p1: HGDIOBJ; p2: Integer; p3: Pointer): Integer; stdcall;
p1 CreateCompatibleBitmap 的返回值
p2 ?24
p3 ?
function GetDeviceCaps(DC: HDC; Index: Integer): Integer; stdcall;
DC CreateCompatibleDC 的返回值
Index RASTERCAPS = 38; { Bitblt capabilities
function GetDeviceCaps(DC: HDC; Index: Integer): Integer; stdcall;
DC CreateCompatibleDC 的返回值
Index BITSPIXEL = 12; { Number of bits per pixel
function CreateBitmap(Width, Height: Integer; Planes, BitCount: Longint;
Bits: Pointer): HBITMAP; stdcall;
Width 5
Height 1
Planes 1
BitCount 10
Bits 0
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; stdcall;
DC CreateCompatibleDC 的返回值
p2 CreateBitmap 的返回值
function SetPixel(DC: HDC; X, Y: Integer; Color: COLORREF): COLORREF; stdcall;
DC CreateCompatibleDC 的返回值
X 0x00000000
Y 0x00000000
Color 0x000000FF
function GetBitmapBits(Bitmap: HBITMAP; Count: Longint;
Bits: Pointer): Longint; stdcall;
Bitmap CreateBitmap 的返回值
Count 0x00000002
Bits
function SetPixel(DC: HDC; X, Y: Integer; Color: COLORREF): COLORREF; stdcall;
DC CreateCompatibleDC 的返回值
X 0x00000000
Y 0x00000000
Color 0x0000FF00
function GetBitmapBits(Bitmap: HBITMAP; Count: Longint;
Bits: Pointer): Longint; stdcall;
Bitmap CreateBitmap 的返回值
Count 0x00000002
Bits
function SetPixel(DC: HDC; X, Y: Integer; Color: COLORREF): COLORREF; stdcall;
DC CreateCompatibleDC 的返回值
X 0x00000000
Y 0x00000000
Color 0x00FF0000
function GetBitmapBits(Bitmap: HBITMAP; Count: Longint;
Bits: Pointer): Longint; stdcall;
Bitmap CreateBitmap 的返回值
Count 0x00000002
Bits
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; stdcall;
DC CreateCompatibleDC 的返回值
p2 SelectObject 的返回值
function DeleteObject(p1: HGDIOBJ): BOOL; stdcall;
p1 CreateBitmap 的返回值
function CreateCompatibleBitmap(DC: HDC; Width, Height: Integer): HBITMAP; stdcall;
DC CreateDCA 的返回值
Width 0x00000400
Height 0x00000015
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; stdcall;
DC CreateCompatibleDC 的返回值
p2 CreateCompatibleBitmap 的返回值
function BitBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC;
XSrc, YSrc: Integer; Rop: DWORD): BOOL; stdcall;
DestDC CreateCompatibleDC 的返回值
X 0x00000000
Y 0x00000000
Width 0x00000400
Height 0x00000001 变
SrcDC CreateDCA 的返回值
XSrc 0x00000000 变
YSrc 0x0000000F 变
Rop SRCCOPY
function GetDIBits(DC: HDC; Bitmap: HBitmap; StartScan, NumScans: UINT;
Bits: Pointer; var BitInfo: TBitmapInfo; Usage: UINT): Integer; stdcall;
DC CreateCompatibleDC 的返回值
Bitmap CreateCompatibleBitmap 的返回值
StartScan 0x00000000
NumScans 0x00000001
Bits
BitInfo
Usage 0x00000000
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; stdcall;
DC CreateCompatibleDC 的返回值
p2 CreateCompatibleBitmap 的返回值
function DeleteDC(DC: HDC): BOOL; stdcall;
DC CreateDCA 的返回值
function DeleteDC(DC: HDC): BOOL; stdcall;
DC CreateCompatibleDC 的返回值
function DeleteObject(p1: HGDIOBJ): BOOL; stdcall;
p1 SelectObject 的返回值
radmin
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; stdcall;
DC
p2
function ExtCreateRegion(XForm: PXForm; Count: DWORD; const RgnData: TRgnData): HRGN; stdcall;
XForm nil 单元转换
Count 数据大小
RgnData 数据
function SelectClipRgn(DC: HDC; Region: HRGN): Integer; stdcall; -> ->
DC SelectObject 的DC
Region ExtCreateRegion 的返回值
返回值 COMPLEXREGION = 3
function SetDIBitsToDevice(DC: HDC; DestX, DestY: Integer; Width, Height: DWORD;
SrcX, SrcY: Integer; nStartScan, NumScans: UINT; Bits: Pointer;
var BitsInfo: TBitmapInfo; Usage: UINT): Integer; stdcall;
DC SelectObject 的DC
DestX 0 服务端屏幕X
DestY 0 服务端屏幕Y
Width $320 服务端屏幕Width
Height $258 服务端屏幕Height
SrcX 0
SrcY 0
nStartScan 0
NumScans $258
Bits 数据?
BitsInfo
Usage 不知道DIB_RGB_COLORS
function SelectClipRgn(DC: HDC; Region: HRGN): Integer; stdcall; ->
DC SelectObject 的DC
Region 0
返回值 SIMPLEREGION = 2
function DeleteObject(p1: HGDIOBJ): BOOL; stdcall;
p1 ExtCreateRegion 的返回值
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; stdcall;
DC 原 SelectObject 的DC
p2 上一个 SelectObject 的返回值
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; stdcall;
DC 原 SelectObject 的DC
p2 上一个 SelectObject 的返回值
普通模式
function BitBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC;
XSrc, YSrc: Integer; Rop: DWORD): BOOL; stdcall;
DestDC
X 0 服务端屏幕X
Y 0 服务端屏幕Y
Width $320 服务端屏幕Width
Height $258 服务端屏幕Height
SrcDC 上一个 SelectObject 的返回值 = 上一个 SelectObject 的DC= 原 SelectObject 的DC
XSrc 0
YSrc 0
Rop SRCCOPY
伸拉模式
function SetStretchBltMode(DC: HDC; StretchMode: Integer): Integer; stdcall;
DC
StretchMode
function StretchBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC;
XSrc, YSrc, SrcWidth, SrcHeight: Integer; Rop: DWORD): BOOL; stdcall;
DestDC
X
Y
Width
Height
SrcDC
XSrc
YSrc
SrcWidth
SrcHeight
Rop
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; stdcall;
DC 上一个 SelectObject 的返回值 = 上一个 SelectObject 的DC= 原 SelectObject 的DC
p2 上一个 SelectObject 的返回值
上面是Radmin和R_server所用抓屏和显屏的API函数
某网友的分析,我还不知如何分析
相关文章推荐
- u-boot_smdkv210 分析:启动代码汇编部分总结
- PHP 应用提速 - 第 2 部分: 分析 PHP 应用程序以查找、诊断和加速运行缓慢的代码
- listview 部分代码分析
- 第四部分 linux led驱动代码分析
- linux内核分析第四周-使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
- 慢慢分析linux代码--启动部分
- PostgreSQL代码分析,查询优化部分,pull_ands()和pull_ors()
- swish-e代码分析,索引部分(5)
- PostgreSQL代码分析,查询优化部分,canonicalize_qual
- 堡垒机代码分析-应用发布帐号同步部分
- nova resize代码调用部分分析
- grant table 相关代码分析(基于linux2.6.32) 初始化与构建部分
- 万网API短信平台的部分例子代码
- CppUnit部分核心代码分析之Message
- DIOCP开源项目 API代码的封装和流程分析
- opencv2.2.0源代码(include文件)分析(3)--上部分
- FFMPEG-0.11.1分析之ffmpeg结构(简单涉及)与代码流程(主要涉及前部分的准备工作)
- 第五部分 linux 按键驱动代码分析
- u-boot_smdkv210 分析四:启动代码汇编部分总结
- 关于JMeter的CSV Data Set Config的源码改写(包括了部分界面等代码的分析)