Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетУказКурсРабСистемПрогрЗИЭИТ2005.doc
Скачиваний:
6
Добавлен:
13.09.2019
Размер:
698.37 Кб
Скачать

Тема 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;