3. Проверка работоспособности программы
Для наглядной проверки работоспособности программы сделаем расписание запуска следующих программ:
- calc.exe
- cmd.exe
- notepad.exe
Для этого необходимо занести данные в файл schedule:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\shedule]
"1"="14:09 c:\\windows\\system32\\calc.exe"
"2"="14:10 c:\\windows\\system32\\cmd.exe"
"3"="13:15 c:\\windows\\system32\\notepad.exe"
Затем необходимо импортировать эти данные в реестр.
После этого запускаем программу. На экране появляется окно с надписью “выполнение”, что свидетельствует о работе программы.
В период выполнения, программа проверяет расписание, которое хранится в реестре, и если находит там время совпадающее с текущим, то запускается соответствующая программа.
Заключение
В результате курсового проекта была разработана программа, которая позволяет осуществлять запуск программы по расписанию, которое хранится в реестре. Средством написания данной программы являлась интегрированная среда программирования, специально предназначенная для программирования графической операционной системы. Разработанная программа обладает графическим интерфейсом.
В итоге, задание на курсовой проект было выполнено в полном объеме.
Приложение А
(ОБЯЗАТЕЛЬНОЕ)
Алгоритм работы программы
Рисунок 1- Алгоритм работы программы
Приложение Б
(ОБЯЗАТЕЛЬНОЕ)
Листинг программы
// list.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include "windows.h"
#include "stdlib.h"
#include "winioctl.h"
#include "shellapi.h"
// функция проверки расписания в реестре
void CheckShedule(void);
char shed[30][3];
// оконная функция
LRESULT CALLBACK WindowProc(HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam);
// основная функция
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// создание и заполнение структуры окна
WNDCLASS wcl;
wcl.style=CS_HREDRAW|CS_VREDRAW;
wcl.lpfnWndProc=WindowProc;
wcl.cbClsExtra=0;
wcl.cbWndExtra=DLGWINDOWEXTRA;
wcl.hInstance=hInstance;
wcl.hIcon=LoadIcon(NULL, IDI_APPLICATION);
wcl.hCursor=LoadCursor(NULL, IDC_ARROW);
wcl.hbrBackground=(HBRUSH)(COLOR_BTNFACE+1);
wcl.lpszMenuName=NULL;
wcl.lpszClassName="WWW";
strcpy(shed[0], "1");
strcpy(shed[1], "2");
strcpy(shed[2], "3");
strcpy(shed[3], "4");
strcpy(shed[4], "5");
strcpy(shed[5], "6");
strcpy(shed[6], "7");
strcpy(shed[7], "8");
strcpy(shed[8], "9");
strcpy(shed[9], "10");
strcpy(shed[10], "11");
strcpy(shed[11], "12");
strcpy(shed[12], "13");
strcpy(shed[13], "14");
strcpy(shed[14], "15");
strcpy(shed[15], "16");
strcpy(shed[16], "17");
strcpy(shed[17], "18");
strcpy(shed[18], "19");
strcpy(shed[19], "20");
strcpy(shed[20], "21");
strcpy(shed[21], "22");
strcpy(shed[22], "23");
strcpy(shed[23], "24");
strcpy(shed[24], "25");
strcpy(shed[25], "26");
strcpy(shed[26], "27");
strcpy(shed[27], "28");
strcpy(shed[28], "29");
strcpy(shed[29], "30");
// регистрация класса окна
if (!RegisterClass(&wcl)) return 0;
// создание диалогового окна
HWND hWnd=CreateDialogParam(hInstance,"TESTWIN",NULL,NULL,NULL);
// прорисовка окна
ShowWindow(hWnd, nCmdShow);
// обновление окна
UpdateWindow(hWnd);
// установка таймера
SetTimer(hWnd, 1, 60000, NULL);
// цикл обработки сообщений
MSG lpMsg;
while (GetMessage(&lpMsg, NULL, 0 ,0))
{
TranslateMessage(&lpMsg);
DispatchMessage(&lpMsg);
}
return lpMsg.wParam;
}
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_DESTROY: PostQuitMessage(0); break;
// если пришло сообщение от таймера, проверка расписания в реестре
case WM_TIMER:
CheckShedule();
break;
default: return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
void CheckShedule(void)
{
// объявление переменных
SYSTEMTIME time;
HKEY hOpen;
DWORD datatype, Buffsize;
long opRes;
char* szAlloc = "shedule\\";
char hour[3], minute[3], buff[1024];
hour[2] = minute[2] = 0;
// открытие раздела реестра
opRes = RegOpenKey(HKEY_CURRENT_USER,szAlloc,&hOpen);
// если не открылся, то сообщение и выход
if(opRes)
{
MessageBox(0, "Cannot open registry key!", "Error", MB_ICONSTOP);
return;
}
// получение текущего времени
GetLocalTime(&time);
for(int i = 0; i < 30; i++)
{
// чтение строки из реестра с временем и строкой запуска
if (RegQueryValueEx(hOpen,shed[i],NULL,&datatype,(BYTE*)buff,&Buffsize))
// если не прочитано, то переход к следующей
continue;
// считывание времени запуска
hour[0] = buff[0];
hour[1] = buff[1];
minute[0] = buff[3];
minute[1] = buff[4];
// если текущее время равно считанному из реестра
if((atoi(hour) == time.wHour) && (atoi(minute) == time.wMinute))
{
// запуск программы
ShellExecute(0,"open", &buff[6], NULL, NULL, SW_SHOWNORMAL);
}
// обнуление буфера
memset(buff, 0, sizeof(buff));
}
}
... из списка исключений в список одноименных файлов или удаляет файл из списка исключений 2. Программная реализация алгоритма При создании программы необходимо запустить среду программирования Microsoft Visual C++ 6.0. Для использования MFC AppWizard необходимо выполнить следующие действия: в главном меню выбирается пункт File и подпункт New. В появившемся диалоговом окне нужно ...
... приложениями и DOS – приложениями). Цель работы: получение навыков запуска и настройки режима выполнения программ (Windows – приложениями и DOS – приложений) в операционных системах Windows NT/95, изменения различных параметров операционной системы, работая с файлами и документами в приложениях Windows. Работа в текстовом редакторе Microsoft Word. Наберите в окне WinWord текст вашей краткой ...
... элементов, глобальное пространство имен, а также лавинообразную первоначальную загрузку сети. Таким образом ОСРВ SPOX имеет необходимые механизмы для создания отказоустойчивой распределенной операционной системы реального времени, концепция построения которой описана в главе 2. 4.3 Аппаратно-зависимые компоненты ОСРВ Модули маршрутизации, реконфигурации, голосования реализованы как аппаратно- ...
... . В качестве дополнительных услуг часто представляются возможности записи макрокоманд, создания собственных входных и выходных форм, а также обмена информацией с базами данных. Системы управления базами данных (СУБД) – информационно-поисковые системы, позволяющие обрабатывать (вводить, осуществлять поиск, сортировать и пр.) большие массивы информации. Примером простейшей базы данных является ...
0 комментариев