Здравствуйте, Ivan Afonin!
Вот Вам программа в формате COM.
[code h=200]
.model tiny
.code
.startup
mov ax,0003h ;1)необходимо для прямой записи в память под ХР
int 10h ;2)очистим экран
mov cx, 2000h ;скроем курсор
mov ah, 1
int 10h
;заполним экран текстом
mov ax, 0b800h ;сегмент видео
mov es, ax
xor di,di ;с начала 0 страницы экрана
mov al, 'A' ;в каждой строке свой символ
mov ah, attr ;атрибут начинаем с 0eh
mov cx, 25 ;25 строк
PrintLoop:
push cx
mov cx, 80 ;в строке 80 символов
rep stosw ;пишем
pop cx
inc al ;инкремент символа
loop PrintLoop ;по всем строкам
mov ax, 3505h ;прочитаем адрес вектора 05
int 21h
mov seg_05, es ;сохраним сегмент
mov off_05, bx ;смещение
lea dx, new_05 ;установим новый вектор 05 в ds:dx
mov ax, 2505h
int 21h
wait_esc:
mov ah, 0 ;ждем клавишу
int 16h
cmp ah, 37h ;PrintScreen?
je wait_esc ;все кроме PrintScreen - выход
lds dx, old_05 ;восстановим старый вектор 05
mov ax, 2505h
int 21h
.exit 0
new_05: ;PrintScreen
push ds cx di ;сохраним используемые регистры
mov cx, 0b800h
mov ds, cx ;будем использовать видеосегмент
mov di, 1 ;смещение атрибута первого символа
mov cx, 25*80 ;число симаолов на экране
mov al, cs:attr ;атрибут
inc al ;инкремент
and al, 0fh ;attr должен быть <= 15
jnz SaveAttr ; и не равен 0
inc al ;если = 0, то 1
SaveAttr:
mov cs:attr, al ;сохраним атрибут
IncAttrLoop: ;пропишем новый атрибут по всем позициям
mov [di], al
inc di
inc di
loop IncAttrLoop
pop di cx ds
iret
.data
old_05 label dword ;адрес вектора для использования в lds
off_05 dw ? ;смещение
seg_05 dw ? ;сегмент
attr db 0eh ;атрибут
end[/code]
Под чистым ДОС-ом будет работать на ура
А вот под XP не сработает...
Дело в том, что ОС перехватывает некоторые клавиши и сочетания клавиш
и до программы под ДОС они просто не доходят.
Но не все потеряно...
Есть выход! Необходимо создать в папке с COM-программой PIF-файл!
Надеюсь, Вы знаете, как это делать...
А вот в свойствах этого PIF-файла на вкладке "Разное" (см. изображение)
необходимо убрать "птичку" около PrtSc,
Т.о., кнопка PrintScreen станет доступной в нашей программе
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен