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));

}

}


Информация о работе «Системное программирование в операционных системах»
Раздел: Информатика, программирование
Количество знаков с пробелами: 9524
Количество таблиц: 0
Количество изображений: 1

Похожие работы

Скачать
55779
3
6

... из списка исключений в список одноименных файлов или удаляет файл из списка исключений   2.       Программная реализация алгоритма При создании программы необходимо запустить среду программирования Microsoft Visual C++ 6.0. Для использования MFC AppWizard необходимо выполнить следующие действия: в главном меню выбирается пункт File и подпункт New. В появившемся диалоговом окне нужно ...

Скачать
14147
2
2

... приложениями и DOS – приложениями). Цель работы: получение навыков запуска и настройки режима выполнения программ (Windows – приложениями и DOS – приложений) в операционных системах Windows NT/95, изменения различных параметров операционной системы, работая с файлами и документами в приложениях Windows. Работа в текстовом редакторе Microsoft Word. Наберите в окне WinWord текст вашей краткой ...

Скачать
148576
34
0

... элементов, глобальное пространство имен, а также лавинообразную первоначальную загрузку сети. Таким образом ОСРВ SPOX имеет необходимые механизмы для создания отказоустойчивой распределенной операционной системы реального времени, концепция построения которой описана в главе 2. 4.3 Аппаратно-зависимые компоненты ОСРВ Модули маршрутизации, реконфигурации, голосования реализованы как аппаратно- ...

Скачать
33996
0
8

... . В качестве дополнительных услуг часто представляются возможности записи макрокоманд, создания собственных входных и выходных форм, а также обмена информацией с базами данных. Системы управления базами данных (СУБД) – информационно-поисковые системы, позволяющие обрабатывать (вводить, осуществлять поиск, сортировать и пр.) большие массивы информации. Примером простейшей базы данных является ...

0 комментариев


Наверх