- •Введение
- •Тема 1. Двухпросмотровый ассемблер
- •Тема 2. Com-сервер для обработки и хранения результатов тестирования.
- •Тема 3. Дисковая утилита для просмотра fat.
- •Тема 4. Сервер автоматизации ole.
- •Тема 5. Дефрагментатор файловой системы.
- •Элемент каталога для короткого имени
- •Тема 6. Монитор системных ресурсов для Windows 98/2000.
- •Тема 7. Менеджер процессов и потоков для Windows 98/2000.
- •Тема 8. Файловый менеджер для Windows 98/2000/nt.
- •Тема 9. Формат исполняемого pe-файле в Windows 98/nt.
- •Тема 10. Запуск в определенное время различных программ.
- •Тема 11. Утилита, сохраняющая в файле информацию из системного реестра о программах, установленных на компьтере.
- •Тема 12. Утилита для очистки системного реестра Windows.
- •Тема 13. Утилита, отслеживающая изменения в файловой системе Windows в заданных каталогах.
- •Тема 14. Просмотрщик таблицы разделов и fat.
- •Тема 15. Утилита MaxSplitter
- •Тема 16. Утилита удаленного администрирования.
- •Тема 17. Простая почтовая программа на основе протокола smtp.
- •Тема 18. Ftp - клиент.
- •Тема 19. Ftp - сервер.
- •Тема 20. Системные сервисы Windows nt/2000.
- •Литература
- •Приложение 1. Tcp/ip Программирование с использованием WinSock
- •Создание и использование сокетов
- •Закрытие сокета
- •Функция shutdown()
- •Методы прекращения работы гнезда
- •Функция bind()
- •Приложение может послать запрос на соединение с помощью функции
- •Отправка и прием данных через сокеты потоков
- •Ожидание и обработка событий
- •Использование функции wsaAsyncSelect()
- •Приложение 2. Команды ftp
- •Приложение 3. Команды smtp
- •Приложение 4. Заголовки почты smtp
Тема 10. Запуск в определенное время различных программ.
Техническое задание.
Разработать программу, позволяющую настроить компьютер для запуска в определенное время различных программ. Предусмотреть возможность запуска Trial-программ с ограниченным сроком использования.
Методические указания.
Для запуска внешних программ можно использовать функции WinExec, ShellExecute или CreateProcess. Предпочтительней использовать функцию CreateProcess, которая создает новый процесс и его основной поток. При этом новый процесс выполняет указанный исполняемый файл.
BOOL CreateProcess(
LPCTSTR lpApplicationName, // имя исполняемого файла
LPTSTR lpCommandLine, // командная строка
LPSECURITY_ATTRIBUTES lppa, // атрибуты защиты процесса
LPSECURITY_ATTRIBUTES lpta, // атрибуты защиты потока
BOOL bInheritHandles, // флаг наследования описателей
DWORD dwCreationFlags, // флаги создания
LPVOID lpEnvironment, // указатель блока переменных среды
LPCTSTR lpCurrentDirectory, // текущий каталог
LPSTARTUPINFO lpStartupInfo, // блок начальных параметров
LPPROCESS_INFORMATION lppi); // указатель структуры, описывающей порожденный процесс.
Функция возвращает TRUE в случае успеха и FALSE - в случае неудачи.
Параметры:
lpApplicationName - указатель на строку, содержащую имя исполняемой программы. Имя может быть полное. Если оно не полное, то поиск файла производится в текущем каталоге. Параметру может быть присвоено значение NULL. В этом случае в качестве имени файла выступает первая выделенная пробелами лексема из строки lpCommandLine;
lpCommandLine – указатель командной строки. Если параметр lpApplicationName имеет значение NULL, то имя исполняемого файла выделяется из lpCommandLine, а поиск исполняемого файла производится в соответствии с правилами, действующими в системе;
lppa - указатель на структуру, описывающую параметры защиты процесса. Если параметру присвоено значение NULL, то устанавливаются атрибуты “по умолчанию”;
lpta- указатель на структуру, описывающую параметры защиты первичного потока. Если параметру присвоено значение NULL, то устанавливаются атрибуты “по умолчанию”;
bInheritHandles - определяет, будет ли порожденный процесс наследовать описатели (handles) объектов родительского процесса. Например, если родительский процесс A уже до этого порождал процесс B, то он получил описатель процесса B и может им манипулировать. Если теперь он порождает процесс C с параметром bInheritHandles равным TRUE, то и процесс C сможет работать с описателем процесса B;
dwCreationFlags - определяет некоторые дополнительные условия создания процесса и его класс приоритета;
lpEnvironment- указатель на блок переменных среды порожденного процесса. Если этот параметр равен NULL, то порожденный процесс наследует среду родителя. Иначе он должен указывать на завершающийся нулем блок строк, каждая из которых завершается нулем (аналогично DOS);
lpCurrentDirectory - указатель на строку, содержащую полное имя текущего каталога порожденного процесса. Если этот параметр равен NULL, то порожденный процесс наследует каталог родителя;
lpStartupInfo - указатель на структуру STARTUPINFO, которая определяет параметры главного окна порожденного процесса;
lppi - указатель на структуру, которая будет заполнена информацией о порожденном процессе после возврата из функции.
Пример: программа, запускающая редактор Microsoft Word.
#include <windows.h>
#include <conio.h>
#include <stdio.h>
int main()
{ PROCESS_INFORMATION pi ;
STARTUPINFO si ;
ZeroMemory( &si, sizeof(si)) ;
si.cb = sizeof( si ) ;
printf( "Press any key to start WinWord -- " );
getch() ;
CreateProcess( NULL, "WinWord", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ) ;
return 0 ;
}
Функция GetLocalTime осуществляет выборку местного времени из структуры типа SYSTEMTIME. Эта функция имеет следующий синтаксис:
VOID GetLocalTime(LPTSYSTEMTIME lpst);
Определение структуры SYSTEMTIME
typedef struct _ SYSTEMTIME
{ WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME;