| 功能号 | 入口参数 | 出口参数 |
| AX = 1700H 检验是否支持剪贴板 |
AX = 1700H | AX = 1700H 不支持 |
| AX <> 1700H 支持 | ||
| AH = 1701H 打开剪贴板 |
AX = 1701H | AX <> 0 成功 |
| AX = 0 剪贴板已打开 | ||
| AH = 1702H 清空剪贴板 |
AX = 1702H | AX <> 0 成功 |
| AX = 0 失败 | ||
| AH = 1703H 将数据传入剪贴板 |
AX = 1703H | AX <> 0 成功 |
| DX = 数据格式 1 = 文本 2 = Bitmap 3 = Metafile picture 4 = SYLK 5 = DIF 6 = TIFF 7 = OEM 文本 |
||
| ES:BX 指向数据缓冲区 | AX = 0 失败 | |
| SI:CX = 数据长度 | ||
| AH = 1704H 取剪贴板数据长度 |
AX = 1704H | DX:AX = 剪贴板内数据长度 |
| DX = 数据格式(详见1703的DX) | DX:AX = 0 剪贴板内无数据 | |
| AH = 1705H 剪贴板数据 |
AX = 1705H | AX <> 0 成功 |
| ES:BX 指向自己定义的数据缓冲区 | AX = 0 失败 | |
| AH = 1708H 关闭剪贴板 |
AX = 1708H | AX <> 0 成功 |
| AX = 0 失败 |
源程序:
;Copyright by LuoYunBin
;http://asm.yeah.net
;本程序未考虑剪贴板数据长度超过 60K 的情况!
.286
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
ORG 100H
START:
JMP INSTALL
D_CLIP DB 'Length in clipboard is %ld bytes.',0DH,0AH,0AH
DB 'The text in clipboard is:',0DH,0AH
DB '-------------------------------------------',0DH,0AH
DB '%c',0DH,0AH
DB '-------------------------------------------',0DH,0AH,0
DW _LENGTH,BUFFER
D_NO_DATA DB 'There is no data in clipboard!',0DH,0AH,0
_LENGTH DW ?,?
INSTALL:
MOV AX,1701H ;打开剪贴板
INT 2FH
MOV AX,1704H ;读剪贴板数据长度
MOV DX,1 ;数据格式为文本
INT 2FH
OR AX,AX ;为 0 则无数据
JNZ HAS_DATA
OR DX,DX
JZ NO_DATA
HAS_DATA:
MOV _LENGTH,AX ;保存数据长度
MOV _LENGTH+2,DX
MOV AX,1705H ;读剪贴板数据
MOV DX,1
MOV BX,OFFSET BUFFER
INT 2FH
OR AX,AX
JZ NO_DATA
MOV AX,1708H ;关闭剪贴板
INT 2FH
MOV SI,_LENGTH
MOV BUFFER [SI],0
MOV SI,OFFSET D_CLIP ;显示数据
CALL PRINTF
INT 20H
NO_DATA:
MOV SI,OFFSET D_NO_DATA
CALL PRINTF
INT 20H
INCLUDE PRINTF.ASM ;一个共用的显示程序
BUFFER EQU THIS BYTE ;文件用作数据缓冲区
CODE ENDS
END START