DOS 程序读取Windows 的剪贴板数据
概述:
Windows 中剪贴板的功能给了我们很大的方便,但在 DOS 窗口下运行的程序如何利用剪贴板来获得数据呢?DOS 的 INT 2FH 中断提供了几个有关剪贴板操作的中断,以下是中断的资料和读取剪贴板文本数据的编程示例。经过修改大家很容易编出读取图形数据的程序。
本程序要用到的 INT 2FH 中断的 17xxH 功能如下:
功能号
入口参数
出口参数
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
(出处:赢政天下整理收藏)
相关资讯:
相关软件:
→ 特别推荐
→ 热点TOP10
我为人人《《==》》人人为我
关于我们 |
帮助(?)
| 广告服务 |
版权声明 |
商业合作 |
发展历程 |
加盟我们 |
联系我们
Copyright © 1998-2003
winzheng.com All Rights Reserved.
繁体版:由华琦数码技术提供
Powered
by:MeSky.Net
档案馆里的相关老软件
当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。