Сохранение копии экрана в дисковом файле.
Ни в DOS, ни в OS/2 нет утилит, сходных с утилитой печати копии экрана, позволяющей сохранять текущее содержимое экрана дисплея в дисковом файле. В этом разделе вы найдете пояснение, как можно создать программу, которая выполняла бы именно эту функцию.
Эта программа использует ROM-BIOS-прерывание 10Н, функцию 8 для чтения символа из текущей позиции курсора, после чего этот символ записывается в файл на диске. Как и в предыдущем разделе, вы опять встретитесь с функцией goto_xy(), которая в этом случае используется для перемещения курсора последовательно по всем строкам экрана, начиная с левого верхнего угла экрана до правого нижнего угла.
Имя файла, в котором будет храниться копия экрана, указываетя в качестве аргумента программы. Если, к примеру, вы назовете свою программу, копирующую экран на диск, screen, то представленная ниже командная строка приведет к созданию копии экрана в файле с именем scr.sav:
C> screen scr.sav
А вот исходный текст самой программы копирования:
/* Эта программа копирует содержимое экрана вашего
дисплея в файл, имя которого указано в командной
строке
*/
#include "dos.h"
#include "stdio.h"
void save_screen(),goto_xy();
main(argc,argv)
int argc;
char *argv[];
if ( argc != 2 )
printf(" используйте формат : screen <имя файла>");
exit(1);
save_screen(argv[1]);
/* сохранение содержимого экрана в дисковом файле */
void save_screen(fname)
char *fname;
FILE *fp; union REGS r;
register char x,y;
if ( !( fp=fopen(fname,"w")))
printf(" Файл не может быть открыт ");
exit(1);
for (y=0;y<25;y++)
for (x=0;x<80;x++)
goto_xy(x,y);
r.h.ah = 8; /* чтение символа */
r.h.bh = 0; /* видеостраница */
int86(0x10,&r,&r);
putc(r.h.al,fp); /* выдача (печать) символа */
fclose(fp);
/* Перемещение курсора в позицию (x,y) */
void goto_xy(x,y)
int x,y;
union REGS r;
r.h.ah = 2; /* функция адресации курсора */
r.h.dl = x; /* координата столбца */
r.h.dh = y; /* координата строки */
r.h.bh = 0; /* видеостраница */
int86(0x10,&r,&r);
Создаваемый файл представляет собой стандартный ASCII файл, который может быть отредактирован и распечатан как обычный текстовый файл. Программа позволяет записывать лишь символы, отображенные на экране, но не позволяет сохранить соответствующие атрибуты отображения символов. Однако дополнить программу для того, чтобы она записывала и атрибуты символов несложно, и вы при желании можете это сделать самостоятельно.