Вход на сайт
Заметки программиста
613 просмотров
Перейти к просмотру всей ветки
в ответ uscheswoi_82 19.12.23 14:09, Последний раз изменено 19.12.23 14:21 (uscheswoi_82)
Программа pnggen генерирует пустой файл png, а так-же bat файл и запускает программу MS Paint-
Код pnggen.c:
#include <stdio.h> #include <stdlib.h> #include <windows.h> /* Пустой png файл с размером 1x1 пикселей */ int buf[] = {137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 1, 0, 0, 0, 1, 8, 2, 0, 0, 0, 144, 119, 83, 222, 0, 0, 0, 1, 115, 82, 71, 66, 0, 174, 206, 28, 233, 0, 0, 0, 4, 103, 65, 77, 65, 0, 0, 177, 143, 11, 252, 97, 5, 0, 0, 0, 9, 112, 72, 89, 115, 0, 0, 14, 195, 0, 0, 14, 195, 1, 199, 111, 168, 100, 0, 0, 0, 12, 73, 68, 65, 84, 24, 87, 99, 248, 255, 255, 63, 0, 5, 254, 2, 254, 167, 53, 129, 132, 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130, -1}; int main(int argc, char *argv[]) { char counter[10]; /* Для счётчика */ char filename_bat[50]; /* Имя файла bat */ char filename_png[50]; /* Имя файла png */ int int_counter = 0; /* Инициализация счётчика */ FILE *o_bat; /* Для файла bat */ FILE *o_png; /* Для файла png */ FILE *i_counter; /* Для файла counter */ FILE *o_counter; /* Для файла counter */ SYSTEMTIME local_time; /* Текущее время */ /* Если аргументы не введены, выводим текст на экран pnggen.exe <prefix> и завершаем программу */ if(argc < 2) { printf("pnggen.exe <prefix>"); /* Вывод на экран pnggen <prefix> */ return 0; /* Завершение программы */ } i_counter = fopen("counter.", "r"); /* Открываем файл для чтения */ /* Если файла counter не существует, то создаём новый файл counter, и записываем в файл число 0*/ if(i_counter == NULL) { o_counter = fopen("counter.", "w"); /* Создаём новый файл counter */ fprintf(o_counter, "0"); /* Записываем в файл число 0 */ fclose(o_counter); /* Закрываем файл */ } else { fgets(counter, 10, i_counter); /* Если файл существует, то считываем из файла число */ int_counter = atoi(counter); /* Превращаем из текста в число */ int_counter++; /* Увеличиваем счётчик */ fclose(i_counter); /* Закрываем файл */ } o_counter = fopen("counter.", "w"); /* Открываем файл counter для записи */ fprintf(o_counter, "%d", int_counter); /* Записываем число в файл */ fclose(o_counter); /* Закрываем файл */ GetLocalTime(&local_time); /* Получаем текущую дату и текущее время */ sprintf(filename_bat, "%s_d_d_d_d_d_d_d.bat", argv[1], int_counter, local_time.wDay, local_time.wMonth, local_time.wYear, local_time.wHour, local_time.wMinute, local_time.wSecond); /* Имя файла bat */ sprintf(filename_png, "%s_d_d_d_d_d_d_d.png", argv[1], int_counter, local_time.wDay, local_time.wMonth, local_time.wYear, local_time.wHour, local_time.wMinute, local_time.wSecond); /* Имя файла png */ o_bat = fopen(filename_bat, "w"); /* Открываем bat файл для записи */ fprintf(o_bat, "@echo off\n"); /* Пишим в файл @echo off */ fprintf(o_bat, "mspaint %s", filename_png); /* Пишим в файл mspaint ...*/ fclose(o_bat); /* Закрываем файл */ o_png = fopen(filename_png, "w+b"); /* Открываем файл для записи пустого png файла с размером 1x1 пиксель */ /* Записываем в файл */ for(int j = 0; j<sizeof(buf); j++) fputc(buf[j], o_png); fclose(o_png); /* Закрываем файл */ system(filename_bat); /* Только что созданный bat файл запускаем */ return 0; /* Выходим из программы */ }
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение