功能号 | 入口参数 | 出口参数 |
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