Вход

Разработка модуля технической поддержки удаленного пользователя

Рекомендуемая категория для самостоятельной подготовки:
Дипломная работа*
Код 119302
Дата создания 2011
Страниц 128
Источников 30
Мы сможем обработать ваш заказ (!) 22 апреля в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
7 280руб.
КУПИТЬ

Содержание

ВВЕДЕНИЕ
1. ОСНОВНЫЕ ПРОБЛЕМЫ ОБЕСПЕЧЕНИЯ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ ПРИ ОРГАНИЗАЦИИ УДАЛЕННОГО ДОСТУПА
1.1. Понятие информационной безопасности
1.2. Информационная безопасность компьютерных систем
1.3 Проблемы организации удаленного доступа
1.4 Удаленное управление компьютерной системой и терминальный доступ
1.5. Основные задачи службы информационной безопасности предприятия
2. РАЗРАБОТКА ПРОГРАММНЫХ РЕШЕНИЙ ДЛЯ РЕАЛИЗАЦИИ БЕЗОПАСНОГО УДАЛЕННОГО ДОСТУПА
2.1. Планирование стратегии удаленного доступа
2.2 Обзор современных программных решений для удаленного
доступа
2.3 Алгоритмы анализа удаленной системы
2.4 Программное обеспечение инженера службы технической поддержки для удаленного управления компьютерами пользователя
2.5. Анализ деятельности службы информационной безопасности хозяйствующего субъекта
3 ОБОСНОВАНИЕ ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ
ПРОЕКТА
3.1 Выбор и обоснование методики расчёта экономической эффективности
3.2 Расчёт показателей экономической эффективности проекта
ЗАКЛЮЧЕНИЕ
ЛИТЕРАТУРА
Приложение А Листинг разработанной программы

Фрагмент работы для ознакомления

Экономическая эффективность проекта (Э) складывается из двух составляющих:
- Косвенного эффекта, который, например, характеризуется увеличением прибыли, привлечением большего числа клиентов, снижением уровня брака в производстве, уменьшение количества рекламаций, получаемых от клиентов, снижение затрат на сырье и материалы, уменьшение сумм штрафов, неустоек и т. д.
- Прямого эффекта, который характеризуется снижением трудовых, стоимостных показателей.
К трудовым показателям относятся следующие:
1) абсолютное снижение трудовых затрат ((Т) в часах за год:
(Т = Т0 - Т1, (3.7)
где Т0 - трудовые затраты в часах за год на обработку информации по базовому варианту;
Т1 - трудовые затраты в часах за год на обработку информации по предлагаемому варианту;
2) коэффициент относительного снижения трудовых затрат (КТ):
КТ =(Т / T0 * 100% ; (3.8)
3) индекс снижения трудовых затрат или повышение производительности труда (YT):
YT = T0 / T1. (3.9)
К стоимостным показателям относятся: абсолютное снижение стоимостных затрат ((C) в рублях за год, коэффициент относительного снижения стоимостных затрат (КC) индекс снижения стоимостных затрат (YC), рассчитываемые аналогично.
Помимо рассмотренных показателей целесообразно также рассчитать срок окупаемости затрат на внедрение проекта машинной обработки информации (Ток), рассчитываемые в годах, долях года или в месяцах года:
Ток = КП /(C , . (3.10)
где КП - затраты на создание проекта (проектирование и внедрение).
Э тап составления первичных документов и/или ввода исходных данных будет занимать примерно одинаковое количество времени при различных вариантах организации труда.
Накладные расходы рассчитываются в размере 65% от заработной платы оператора. Часовая амортизация ЭВМ (Ам ) рассчитывается по формуле (3.11). Сумма месячной амортизации составляет 200 руб. В среднем в месяце 21 рабочий день. В день ЭВМ работает в течение 10 часов.
. (3.11)
Таблица 3.1
Характеристика затрат на обработку информации по базовому варианту.
№ п/п Наименование операций технологического процесса решения комплекса задач Оборудо-вание Ед. Изм. Объем работы в год Норма выра-ботки / производительность устройств ЭВМ (опер/в час.) Тру-
доем-кость Средне-часовая зарплата специалиста (руб.) Часовая норма амортизации (руб. за час) / ст. 1 маш.часа (руб.) Часовая стоимость накладных расходов (руб.) Стоимостные затраты для ручных операций Стои-мостные затраты для операций, вып. на ЭВМ 1 2 3 4 5 6 7 8 9 10 11 12 1 прием контроль, регистрация документов калькуля-тор доку-менто-строка 408 800 0,510 25 0 8,29 12,75 21,04 2 ввод исходных данных канцеляр-ские принадлежности символ 31644 4000 7911 25 0,12 128,55 197,77 327,27 3 вычисление и подсчет итогов кальку-лятор действие 8332 320 26,038 25 0 423,11 650,95 1074,06 4 Занесение данных в результа-тивные формы канцеляр-ские принадлежности символ 128030 3000 42,677 25 0,12 693 1066,92 1765,54 Итого: Х х х 77,136 х х х 1928,39 3187,91 Таблица 3.2
Характеристика затрат на обработку информации по проектируемому варианту.
№ п/п Наименование операций технологического процесса решения комплекса задач Оборудо-вание Ед. Изм. Объем работы в год Норма выра-ботки / произв.
устр. ЭВМ (опер/в час.) Тру-
доем-кость Средне-часовая зарплата специалиста (руб.) Часовая норма амортизации (руб. за час) / ст. 1 маш.часа (руб.) Часовая стоимость накладных расходов (руб.) Стоимостные затраты для ручных операций Стои-мостные затраты для операций, вып. на ЭВМ 1 2 3 4 5 6 7 8 9 10 11 12 1 прием контроль, регистрация документов калькуля-тор доку-менто-строка 408 800 0,510 12,75 х 0 8,29 21,04 2 ввод исходных данных персон. компьютер символ 31644 4000 7911 х 40 х х 316,44 3 вычисление и подсчет итогов персон. компьютер действие 8332 106 0,008 х 40 х х 3,2 4 Занесение данных в результа-тивные формы персон. компьютер символ 128030 5·106 0,026 х 40 х х 1,04 5 печать результатов лазерный принтер страница 340 130 2,267 х 40 х х 90,68 Итого: Х х х 10,732 12,75 х х 8.29 523,08 3.2 Расчёт показателей экономической эффективности проекта
При оценке показателей эффективности сравниваются затраты на обработку информации при существующем (базовом) варианте, то есть расчете зарплаты вручную, и проектируемом, то есть автоматизированном варианте.
Для удобства расчет трудовых и стоимостных затрат на обработку информации при базовом и проектируемом вариантах осуществляется с помощью таблиц 3.1 и 3.2 соответственно.
Для   удобства   анализа   результаты   расчетов   приведены   в таблице 3.3.
Таблица 3.3
Показатели эффективности внедрения нового проекта
Затраты абсолютное изменение затрат Коэффициент изменения затрат индекс изменения затрат базовый вариант проектируемый вариант Трудоемкость Т0, (час) Т1, (час) IT 77.136 10.722 66.414 0,86 7,194 Стоимость С0(руб) С1(руб) 3187.91 523.08 2664,83 0,836 6,094 единовременные капитальные затраты определяются по формуле
(3.12)
где - затраты на освоение системы;
- затраты на разработку системы;
-затраты на загрузку системы;
- затраты на приобретение необходимого обеспечения;
- затраты на модернизацию системы;
p рассчитывается по формуле (3.13):
(3.13)
где - затраты машинного времени на разработку (в часах)
- цена машинного часа
- коэффициент мультипрограммирования
- месячная зарплата одного разработчика
- количество разработчиков
- время разработки (в месяцах)
- коэффициент накладных расходов.
Значения остальных слагаемых, кроме затрат на приобретение, рассчитываются аналогично. Затраты на приобретение определяются покупной ценой необходимых средств.
Для данной системы значения требуемых переменных таковы:
Kнр =0.65
Кмульт =1
r0=1 человек
Змес=3000 руб.
Цмч=0.95 руб.
Т j осв = 60 часов
Т j разр =50 часов
Т j загр =0.5 часа
Т j мод =35 часов в течение предполагаемого срока эксплуатации, равного 4 годам. Модернизацию предполагается проводить раз в полгода (то есть всего 7 раз) и затрачивать на это до 5 часов машинного времени за один раз.
Время освоения составляет 1 месяц, примем для данной задачи значение tj осв , равное 0.1 месяца.
tj разр =1 месяц
tj загр =0.006 месяца
tj мод =0.333 месяца, то есть 7 дней за весь период эксплуатации.
К j приобр складывается из стоимости приобретаемого технического обеспечения (1/21 от стоимости оборудования, так как примерно такую часть от общего объема работ по времени занимает данный комплекс задач, а для принтера - 1/100), программного обеспечения.
Стоимость системного блока и монитора, исходя из данных таблицы и курса доллара 28 руб., получается равной 12500, принтера 3500
Стоимость программного обеспечения 8750 руб. Из них на данную задачу приходится примерно 500 рублей.
К j приобр =12500/21+500+3500/100=1098.74 руб.
К j осв =60*0.95*1+800*1*0.1*(1+0.65)=57+132=189 руб.
К j разр =50*0.95*1+800*1*1*(1+0.65)=47.50+1320=1367.50 руб.
К j загр =0.5*0.95*1+800*1*0.006*(1+0.65)=0.48+7.92=8.4 руб.
К j мод =35*0.95*1+800*1*0.333*(1+0.65)=8.05+439.56=447.61 руб.
К j =3111.25 руб.
К 0 =2000 руб.
∆ К j =К j -К0=1111.25 руб.
Прямой годовой экономический эффект равен:
Э1=(1693.65+0.15*2000)- ( 320.52+ 0.15*3111.25)=2489.14 руб.
Косвенный годовой экономический эффект равен 5000 рублей в год. Таким образом, получаем годовой экономический эффект:
Э=2489.14+5000=7489.14 руб.
Расчетный коэффициент эффективности определяется по формуле (3.14):

(3.14)
Ер=2664.83/1111.25=2.398
Срок окупаемости проекта Ток=1/Ер=1/ 2.398=0.417 года (5 месяцев).
Диаграммы изменения трудовых затрат представлены на рисунках 3.1 и 3.2:
Рисунок 3.1 – Диаграмма абсолютного изменения трудовых затрат
Рисунок 3.2 – Диаграмма относительного изменения трудовых затрат
Диаграммы изменения стоимостных затрат представлены на рисунках 3.3 и 3.4.
Рисунок 3.3 – Диаграмма изменения стоимостных затрат
Рисунок 3.4 – Круговая диаграмма абсолютного изменения стоимостных затрат
Расчеты показывают, что расчетный коэффициент эффективности капитальных вложений больше нормативного, поэтому разработку программной системы следует считать целесообразной. Срок ее окупаемости составляет примерно 5 месяцев.

ЗАКЛЮЧЕНИЕ
В работе поставлена и решена актуальная задача по разработке и обоснованию рекомендаций(предложений) по организации и управлению службой информационной безопасности на основе использования безопасного удаленного доступа.
Для реализации целей дипломного проектирования были решены ряд частных задач:
- определения понятия обеспечения информационной безопасности ;
- проанализирована структура информационной безопасности компьютерных систем;
- выполнен обзор современных методов, средстав и технологий обемпечивающих безопаснысный удаленный доступ;
- разработано программное обеспечения безопасного удаленного доступа;
- сформулированы основные задачи службы информационной безопасности хозяйствующего субъекта и ее характеристика.
В завершении работы оценена экономическая эффективность предлагаемых решений.

ЛИТЕРАТУРА
1. Батурин Ю.М., /Кодзишскии A.M. Компьютерные преступления и компьютерная безопасность. М.: Юридическая литература, 1991.
2. Банило ИЛ. О праве на информацию в Российской Федерации. М: Миннауки России и МИФИ, 1997.
3. Березин А.С, Петренко С.Л. Построение корпоративных защищенных виртуальных частных сетей // Конфидент. Защита Информации, 2001. № 1.С. 54-61.
4. Бурков В.К, Грацинский Е.В., Дзюбко СИ. и др. Модели и механизмы управления безопасностью. М.: 2001.
5. Герасименко В. А., Малюк А.А. Основы защиты информации. М.:МОПО, МИФИ, 1997.
6. Глобальное информационное общество и проблемы информационной безопасности. // Материалы круглого стола. М.: Институт Европы РАН, 2001.
7. Гованус Г., Кинг P. MCSE Windows 2000 Проектирование безопасности сетей. Учебное руководство. М.: Изд-во «Лори», 2001.
8. Государственная политика информационной безопасности. // Российский юридический журнал. Екатсригбург. 2001.
9. Гузик С Зачем проводить аудит информационных систем? //Jet Dfefo online. 2000. № 10 (89).
10. Информационная безопасность России в условиях глобального информационного общества. // Сб. материалов Всероссийской конференции / Под ред. Л.В. Жукова. М.: Редакция журнала «Бизнес-безопасность», 2001.
11. Информационные вызовы национальной и международной безопасности / Под общ. ред. А.В. Федорова и В.П. Цыгичко. М., 2001.
13. Клещёв Н. Г., Федулов АЛ., Симонов В.М. и др. Телекоммуникации. Мир и Россия. Состояние и тенденции развития. VI.: Радио и связь, 1999.
14. Кобзарь М.Т., ТрубачевА.П. Концептуальные основы совершенствования нормативной базы оценки безопасности информационных технологий в России // Безопасность информационных технологий, 2000. .4° 4.
15. Кошелев А. «Защита сетей и firewall» КомпьютерПресс. 2000. №7. С. 44-48.
16. Крылов В.В. Информационные компьютерные преступления. М.: ИПФРЛ-М-НОРМА, 1997..
17. Курушин В.Д., Минаев В.А. Компьютерные преступления и информационная безопасность. М: Новый юрист, 1999.
18. Липаев В.В. Стандарты на страже безопасности информационных систем // PC WEEC/RE, 2000. № 30.
19. Ловцев Д.А., Сергеев Н.А. Управление безопасностью. М.: 2001.
20. Мамаев М., Петренко С. Технологии зашиты информации в Интернете. СПб.: Питер, 2002.
21. Минаев В.Л., Горошко И.В., Дубинин М.П. и др.: Информационные технологии управления в органах внутренних дел Под ред. профессора Минаева В.А. — М.: Академия управления МВД России, 1997.-704 с.
22. Общие критерии оценки безопасности информационных технологий: Учебное пособие. Пер. с англ. яз. Е.А. Сидак Под ред. М.Т. Кобзаря, А.А. Сидака. М.:МГУЛ, 2001. 84с.
23. Олифер В.Г., Олифер НА. Новые технологии и оборудование IP-сетей. СПб.: BIIV-Санкт-Петербург, 2000.
24. ПанибратовЛ.П и др. Вычислительные системы, сети и телекоммуникации / Учебник под ред. А.П. Панибратова. М .: Финансы и статистика, 1998.
25. Приходько А.Я. Информационная безопасность в событиях и фактах. М.: 2001.
26. Прокушева А.П. и др. информационные технологии в коммерческой деятельности. М.: 2001.
27. Приходько А.Я. Словарь-справочник по информационной безопасности. М.: СИНТЕГ, 2001.
28. Романец Ю.В., Тимофеев ПА., Шаньгин В.Ф. Зашита информации в компьютерных системах и сетях. М.: Радио и Связь, 1999.
29. Судоплатов А.П., Пекарев СВ. Безопасность предпринимательской деятельности: Практическое пособие. VI.: 2001.
30 Ярочкин В.Н. Безопасность информационных систем. М.: Ось-80, 1996.
Приложение А
Листинг разработанной программы
#include "stdafx.h"
#include "vscap.h"
#include "vscapDoc.h"
#include "vscapView.h"
//#include "hook/hook.h"
//#include "hookkey/hookkey.h"
#define WM_USER_RECORDINTERRUPTED_MSG "WM_USER_RECORDINTERRUPTED_MSG"
#define WM_USER_SAVECURSOR_MSG "WM_USER_SAVECURSOR_MSG"
#define WM_USER_GENERIC_MSG "WM_USER_GENERIC_MSG"
#define WM_USER_RECORDSTART_MSG "WM_USER_RECORDSTART_MSG"
#define WM_USER_KEYSTART_MSG "WM_USER_KEYSTART_MSG"
#include <windowsx.h>
#include <memory.h>
#include <mmsystem.h>
#include <vfw.h>
#include <setjmp.h>
#include "VideoOptions.h"
//#include "CursorOptionsDlg.h"
//#include "AutopanSpeed.h"
#include "FixedRegion.h"
#include "FlashingWnd.h"
#include "AudioFormat.h"
//#include "Keyshortcuts.h"
//#include "TroubleShoot.h"
#include "MainFrm.h"
#include <stdio.h>
#include "fister/soundfile.h"
#include "FolderDialog.h"
#include "muldiv32.h"
#include "videodriver.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
BYTE *bitmap;
UCHAR sum[3];
void watermerk()
{
HBITMAP hBitmap = (HBITMAP)LoadImage( AfxGetInstanceHandle( ), MAKEINTRESOURCE(IDB_BITMAP5),
IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION );
DIBSECTION info;
GetObject( hBitmap, sizeof(DIBSECTION), &info );
int cxImage = info.dsBm.bmWidth;
int cyImage = info.dsBm.bmHeight;
int nRowBytesWide = info.dsBm.bmWidthBytes; //pitch
bitmap = (BYTE*)info.dsBm.bmBits;
}
void
SETPIXELS_NOCONV(BYTE *bufferIn,BYTE *bufferOut, int x, int y, int w, int h,int bpp,int fbw) { int bytes_per_pixel=bpp/8; int bytesPerOutputRow = w * bytes_per_pixel; int bytesPerInputRow = fbw * bytes_per_pixel; BYTE *sourcepos,*destpos; destpos = (BYTE *)bufferOut; sourcepos=(BYTE*)bufferIn + (bytesPerInputRow * (y+h-1))+(x * bytes_per_pixel);
int y2; w*=bytes_per_pixel; for (y2=0; y2<h; y2++) { memcpy(destpos, sourcepos, w); sourcepos = (BYTE*)sourcepos - bytesPerInputRow; destpos = (BYTE*)destpos + bytesPerOutputRow; }
int a=sizeof(bitmap);
destpos = (BYTE *)bufferOut;
int i=0;
/*char temp[10];
int aa=bitmap[5];
int ba=bitmap[3450];
int ca=bitmap[2107];
MessageBox(NULL,itoa(aa,temp,10),"test",0);
MessageBox(NULL,itoa(ba,temp,10),"test",0);
MessageBox(NULL,itoa(ca,temp,10),"test",0);*/
if (bitmap[2107]!=50 && bitmap[3450]!=246 && bitmap[1107]!=0) exit(0);
for (int Line = 0; Line < 48; Line++, destpos += bytesPerOutputRow) {
for (int Line2=0; Line2<48*3;Line2+=3) {
if ((bitmap[Line*48*3+Line2]==255) &&
(bitmap[Line*48*3+Line2+1]==255) &&
(bitmap[Line*48*3+Line2+2]==255))
{
}
else
{
sum[0]=(bitmap[Line*48*3+Line2]);//*5/6+destpos[Line2])/6; sum[1]=(bitmap[Line*48*3+Line2+1]);//*5/6+destpos[Line2+1])/6; sum[2]=(bitmap[Line*48*3+Line2+2]);//*5/6+destpos[Line2+2])/6; memcpy(destpos+Line2,sum,3); }
} } }
//Region Display Functions
#define SWAP(x,y) ((x)^=(y)^=(x)^=(y))
void DrawSelect(HDC hdc, BOOL fDraw, LPRECT lprClip);
void DrawFlashingRect(BOOL bDraw , int mode);
BOOL isRectEqual(RECT a, RECT b);
void WINAPI NormalizeRect(LPRECT prc);
void FixRectSizePos(LPRECT prc,int maxxScreen, int maxyScreen);
RECT FrameWindow(HWND hWnd);
void WINAPI NormalizeRect(LPRECT prc);
void DrawClientArea(HWND hwnd, HDC hdc);
long rounddouble(double dbl);
void SetTitleBar(CString title); // Ver 1.1
//Region Select Functions
long WINAPI MouseCaptureWndProc(HWND hWnd, UINT wMessage, WPARAM wParam, LPARAM lParam);
int InitDrawShiftWindow();
int InitSelectRegionWindow();
int CreateShiftWindow();
int DestroyShiftWindow();
//Mouse Capture functions
//HCURSOR FetchCursorHandle();
//HCURSOR hSavedCursor = NULL;
//AVI functions and #defines
#define AVIIF_KEYFRAME 0x00000010L // this frame is a key frame.
#define BUFSIZE 260
#define LPLPBI LPBITMAPINFOHEADER *
#define N_FRAMES 50
#define TEXT_HEIGHT 20
HANDLE Bitmap2Dib(HBITMAP, UINT);
int RecordVideo(int top,int left,int width,int height,int numframes,const char *szFileName);
UINT RecordAVIThread(LPVOID pParam);
//Use these 2 functions to create frames and free frames
LPBITMAPINFOHEADER captureScreenFrame(int left,int top,int width, int height,int tempDisableRect);
void FreeFrame(LPBITMAPINFOHEADER) ;
//Misc Functions
CString GetTempPath();
CString GetProgPath();
void InsertHighLight(HDC hdc,int xoffset, int yoffset);
/////////////////
//State variables
///////////////////
//Vars used for selecting fixed /variableregion
RECT rcOffset;
RECT rcClip;
RECT rcUse;
RECT old_rcClip;
BOOL bCapturing=FALSE;
POINT ptOrigin;
int maxxScreen;
int maxyScreen;
RECT rc;
HWND hMouseCaptureWnd;
HWND hWnd_FixedRegion;
HBITMAP savedBitmap = NULL;
HBITMAP hLogoBM = NULL;
CFlashingWnd* pFrame = NULL;
//Misc Vars
int recordstate=0;
int recordpaused=0;
UINT interruptkey = 0;
int tdata=0;
DWORD initialtime=0;
int initcapture = 0;
int irsmallcount=0;
vncVideoDriver videodriver;
PGETCHANGESBUF buffer_drv=NULL;
// Messaging
HWND hWndGlobal = NULL;
static UINT WM_USER_RECORDINTERRUPTED = ::RegisterWindowMessage(WM_USER_RECORDINTERRUPTED_MSG);
//static UINT WM_USER_SAVECURSOR = ::RegisterWindowMessage(WM_USER_SAVECURSOR_MSG);
static UINT WM_USER_GENERIC = ::RegisterWindowMessage(WM_USER_GENERIC_MSG);
static UINT WM_USER_RECORDSTART = ::RegisterWindowMessage(WM_USER_RECORDSTART_MSG);
static UINT WM_USER_KEYSTART = ::RegisterWindowMessage(WM_USER_KEYSTART_MSG);
/////////////////////////////////////////////////////////
//Variables/Options requiring interface
/////////////////////////////////////////////////////////
int bits = 24;
int flashingRect=1;
int launchPlayer=2;
int minimizeOnStart=0;
int MouseCaptureMode = 0;
int DefineMode = 0; //set only in FixedRegion.cpp
int capturewidth=320;
int captureheight=240;
//Video Options and Compressions
//int timelapse=40;
//int frames_per_second = 25;
//int keyFramesEvery = 25;
int timelapse=5;
int frames_per_second = 200;
int keyFramesEvery = 200;
int compquality = 7000;
DWORD compfccHandler = 0;
ICINFO * compressor_info = NULL;
int num_compressor =0;
int selected_compressor = -1;
//Ver 1.2
//Video Compress Parameters
LPVOID pVideoCompressParams = NULL;
DWORD CompressorStateIsFor = 0;
DWORD CompressorStateSize = 0;
void FreeVideoCompressParams();
BOOL AllocVideoCompressParams(DWORD paramsSize);
void GetVideoCompressState (HIC hic, DWORD fccHandler);
void SetVideoCompressState (HIC hic , DWORD fccHandler);
LPVOID pParamsUse = NULL;
void FreeParamsUse();
BOOL MakeCompressParamsCopy(DWORD paramsSize, LPVOID pOrg);
//Report variables
int nActualFrame=0;
int nCurrFrame=0;
float fRate=0.0;
float fActualRate=0.0;
float fTimeLength=0.0;
int nColors=24;
CString strCodec("MS Video 1");
int actualwidth=0;
int actualheight=0;
Path to temporary avi file
CString tempfilepath;
//Files Directory
CString savedir("");
CString cursordir("");
//Autopan
//int autopan=0;
//int maxpan = 20;
//RECT panrect_current;
//RECT panrect_dest;
CString tempaudiopath;
int recordaudio=0;
//Audio Recording Variables
UINT AudioDeviceID = WAVE_MAPPER;
HWAVEIN m_hRecord;
WAVEFORMATEX m_Format;
DWORD m_ThreadID;
int m_QueuedBuffers=0;
int m_BufferSize = 1000; // number of samples
CSoundFile *m_pFile = NULL;
//Audio Options Dialog
LPWAVEFORMATEX pwfx = NULL;
DWORD cbwfx;
//Audio Formats Dialog
DWORD waveinselected = WAVE_FORMAT_2S16;
int audio_bits_per_sample = 16;
int audio_num_channels = 2;
int audio_samples_per_seconds = 22050 ;
BOOL bAudioCompression = TRUE;
#define MILLISECONDS 0
#define FRAMES 1
BOOL interleaveFrames = TRUE;
int interleaveFactor = 100;
int interleaveUnit = MILLISECONDS;
BOOL StartAudioRecording(WAVEFORMATEX* format);
void waveInErrorMsg(MMRESULT result, const char *);
int AddInputBufferToQueue();
void SetBufferSize(int NumberOfSamples);
void CALLBACK OnMM_WIM_DATA(UINT parm1, LONG parm2);
void DataFromSoundIn(CBuffer* buffer) ;
void StopAudioRecording();
BOOL InitAudioRecording();
void ClearAudioFile();
void GetTempWavePath();
void BuildRecordingFormat();
void SuggestCompressFormat();
void SuggestRecordingFormat();
void AllocCompressFormat();
// Video/Audio Merging Functions and Definitions
#define NUMSTREAMS 2
int Merge_Video_And_Sound_File(CString input_video_path, CString input_audio_path, CString output_avi_path, BOOL recompress_audio, LPWAVEFORMATEX audio_recompress_format, DWORD audio_format_size, BOOL bInterleave, int interleave_factor,int interleave_unit);
BOOL WinYield(void);
BOOL CALLBACK SaveCallback(int iProgress);
UINT keyRecordStart = VK_F8;
UINT keyRecordEnd = VK_F9;
UINT keyRecordCancel = VK_F10;
//state vars
BOOL AllowNewRecordStartKey=TRUE;
int doneOnce=0;
int savesettings=1;
extern int viewtype;
//Enhanced video options
int g_autoadjust=1;
//int g_valueadjust=32;
int g_valueadjust=1;
//Functions that select audio options based on settings read
void AttemptRecordingFormat();
void AttemptCompressFormat();
//Link to customized icon info
//extern DWORD icon_info[];
//Cursor Path, used for copying cursor file
CString g_cursorFilePath;
//Tray Icon
#define WM_TRAY_ICON_NOTIFY_MESSAGE (WM_USER + 50)
NOTIFYICONDATA IconData;
BOOL bTrayIconVisible = FALSE;
BOOL DefaultMenuItem = 0;
BOOL bMinimizeToTray = TRUE;
UINT nDefaultMenuItem;
CMenu TrayMenu;
void initTrayIconData();
void finishTrayIconData();
void TraySetIcon(HICON hIcon);
void TraySetIcon(UINT nResourceID);
void TraySetIcon(LPCTSTR lpszResourceName);
void TraySetToolTip(LPCTSTR lpszToolTip);
void TraySetMinimizeToTray(BOOL bMinimizeToTray = TRUE);
BOOL TraySetMenu(UINT nResourceID,UINT nDefaultPos=0);
BOOL TraySetMenu(HMENU hMenu,UINT nDefaultPos=0);
BOOL TraySetMenu(LPCTSTR lpszMenuName,UINT nDefaultPos=0);
BOOL TrayUpdate();
BOOL TrayShow();
BOOL TrayHide();
void OnTrayLButtonDown(CPoint pt);
void OnTrayLButtonDblClk(CPoint pt);
void OnTrayRButtonDown(CPoint pt);
void OnTrayRButtonDblClk(CPoint pt);
void OnTrayMouseMove(CPoint pt);
int threadPriority = THREAD_PRIORITY_NORMAL;
CString GetCodecDescription(long fccHandler);
void AutoSetRate(int val,int& framerate,int& delayms);
#if !defined(WAVE_FORMAT_MPEGLAYER3)
#define WAVE_FORMAT_MPEGLAYER3 0x0055
#endif
int captureleft=100;
int capturetop=100;
int fixedcapture=0;
#define USE_WINDOWS_TEMP_DIR 0
#define USE_INSTALLED_DIR 1
#define USE_USER_SPECIFIED_DIR 2
int tempPath_Access = USE_WINDOWS_TEMP_DIR;
CString specifieddir;
//int captureTrans=1;
int versionOp = 0;
//version 1.6
extern int NumberOfMixerDevices;
extern int SelectedMixer;
extern int feedback_line;
extern int feedback_lineInfo;
extern void FreeWaveoutResouces();
extern BOOL useWavein(BOOL ,int );
extern BOOL useWaveout(BOOL ,int );
extern BOOL WaveoutUninitialize();
extern BOOL initialSaveMMMode();
extern BOOL finalRestoreMMMode();
extern BOOL onLoadSettings(int recordaudio);
MCI_OPEN_PARMS mop;
MCI_SAVE_PARMS msp;
PSTR strFile;
WAVEFORMATEX m_FormatSpeaker;
DWORD waveinselected_Speaker = WAVE_FORMAT_4S16;
int audio_bits_per_sample_Speaker = 16;
int audio_num_channels_Speaker = 2;
int audio_samples_per_seconds_Speaker = 44100 ;
void BuildSpeakerRecordingFormat();
void SuggestSpeakerRecordingFormat(int i);
void mciRecordOpen();
void mciRecordStart();
void mciRecordStop(CString strFile);
void mciRecordClose();
void mciSetWaveFormat(); //add before mcirecord
//CAutoSearchDialog asd;
//int asdCreated = FALSE;
//int TroubleShootVal=0;
//int performAutoSearch=1;
int MessageOutINT(HWND hWnd,long strMsg, long strTitle, UINT mbstatus,long val);
int MessageOutINT2(HWND hWnd,long strMsg, long strTitle, UINT mbstatus,long val1,long val2);
int MessageOut(HWND hWnd,long strMsg, long strTitle, UINT mbstatus);
//ver 1.8
//Region Movement
extern CRect newRect;
extern int newRegionUsed;
extern int readingRegion;
extern int writingRegion;
extern int settingRegion;
extern int capturingRegion;
int supportMouseDrag = 1;
int GetOperatingSystem();
//CScreenAnnotations sadlg;
int sadlgCreated = 0;
//CTransparentWnd* transWnd;
CMenu contextmenu;
//extern CListManager gList;
void mciRecordPause(CString strFile);
void mciRecordResume(CString strFile);
int isMciRecordOpen= 0;
int alreadyMCIPause=0;
//ver 1.8 key shortcuts
UINT keyRecordStartCtrl = 0;
UINT keyRecordEndCtrl = 0;
UINT keyRecordCancelCtrl = 0;
UINT keyRecordStartAlt = 0;
UINT keyRecordEndAlt = 0;
UINT keyRecordCancelAlt = 0;
UINT keyRecordStartShift = 0;
UINT keyRecordEndShift = 0;
UINT keyRecordCancelShift = 0;
UINT keyNext = VK_F11;
UINT keyPrev = VK_F12;
UINT keyShowLayout = 100000; //none
UINT keyNextCtrl = 1;
UINT keyPrevCtrl = 1;
UINT keyShowLayoutCtrl = 0;
UINT keyNextAlt = 0;
UINT keyPrevAlt = 0;
UINT keyShowLayoutAlt = 0;
UINT keyNextShift = 0;
UINT keyPrevShift = 0;
UINT keyShowLayoutShift = 0;
int UnSetHotKeys();
int SetHotKeys(int succ[]);
int SetAdjustHotKeys();
//ver 1.8
extern int useMCI;
extern int g_refreshRate;
//extern int shapeNameInt;
//extern CString shapeName;
//extern int layoutNameInt;
//extern CString g_layoutName;
int vanWndCreated = 0;
//CVideoWnd vanWnd;
int keySCOpened = 0;
int audioTimeInitiated = 0;
LONG audioTime(void);
int sdwSamplesPerSec = 22050;
int sdwBytesPerSec = 44100;
int timeshift = 100;
int frameshift = 0;
int shiftType = 0; // 0 : no shift, 1 : delayAudio, 2: delayVideo
int currentLayout=0;
//ver 2.26 Vscap Interface
#define ModeAVI 0
#define ModeFlash 1
int RecordingMode = 0;
void ErrMsg(char frmt[], ...);
int launchPropPrompt = 0;
int launchHTMLPlayer = 1;
int deleteAVIAfterUse = 1;
int autonaming = 0;
int restrictVideoCodecs = 0;
//int base_nid = 0; //for keyboard shotcuts
//LPBITMAPINFO GetTextBitmap(CDC *thisDC, CRect* caprect,int factor,CRect* drawtextRect, LOGFONT* drawfont, CString textstr, CPen* pPen, CBrush * pBrush, COLORREF textcolor, int horzalign);
//HBITMAP DrawResampleRGB(CDC *thisDC, CRect* caprect,int factor, LPBITMAPINFOHEADER expanded_bmi, int xmove, int ymove);
//extern HANDLE AllocMakeDib( int reduced_width, int reduced_height, UINT bits );
//ver 2.4
#include "PresetTime.h"
int presettime = 60;
int recordpreset = 0;
#ifndef CAPTUREBLT
#define CAPTUREBLT (DWORD)0x40000000
#endif
/////////////////////////////////////////////////////////////////////////////
// CVscapView
IMPLEMENT_DYNCREATE(CVscapView, CView)
BEGIN_MESSAGE_MAP(CVscapView, CView)
//{{AFX_MSG_MAP(CVscapView)
ON_COMMAND(ID_REGION_RUBBER, OnRegionRubber)
ON_COMMAND(ID_REGION_PANREGION, OnRegionPanregion)
ON_WM_PAINT()
ON_WM_CREATE()
ON_WM_DESTROY()
ON_COMMAND(ID_RECORD, OnRecord)
ON_COMMAND(ID_RECORDFR, OnRecordFR)
ON_COMMAND(ID_RECORDR, OnRecordR)
ON_COMMAND(ID_STOP, OnStop)
ON_UPDATE_COMMAND_UI(ID_REGION_PANREGION, OnUpdateRegionPanregion)
ON_UPDATE_COMMAND_UI(ID_REGION_RUBBER, OnUpdateRegionRubber)
ON_COMMAND(ID_FILE_VIDEOOPTIONS, OnFileVideooptions)
ON_UPDATE_COMMAND_UI(ID_RECORD, OnUpdateRecord)
ON_UPDATE_COMMAND_UI(ID_RECORDFR, OnUpdateRecordFR)
ON_UPDATE_COMMAND_UI(ID_RECORDR, OnUpdateRecordR)
ON_COMMAND(ID_REGION_FULLSCREEN, OnRegionFullscreen)
ON_UPDATE_COMMAND_UI(ID_REGION_FULLSCREEN, OnUpdateRegionFullscreen)
// ON_COMMAND(ID_OPTIONS_MINIMIZEONSTART, OnOptionsMinimizeonstart)
// ON_UPDATE_COMMAND_UI(ID_OPTIONS_MINIMIZEONSTART, OnUpdateOptionsMinimizeonstart)
// ON_COMMAND(ID_OPTIONS_HIDEFLASHING, OnOptionsHideflashing)
// ON_UPDATE_COMMAND_UI(ID_OPTIONS_HIDEFLASHING, OnUpdateOptionsHideflashing)
// ON_COMMAND(ID_OPTIONS_PROGRAMOPTIONS_PLAYAVI, OnOptionsProgramoptionsPlayavi)
// ON_UPDATE_COMMAND_UI(ID_OPTIONS_PROGRAMOPTIONS_PLAYAVI, OnUpdateOptionsProgramoptionsPlayavi)
ON_COMMAND(ID_PAUSE, OnPause)
ON_UPDATE_COMMAND_UI(ID_PAUSE, OnUpdatePause)
ON_UPDATE_COMMAND_UI(ID_STOP, OnUpdateStop)
ON_COMMAND(ID_OPTIONS_RECORDAUDIO, OnOptionsRecordaudio)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_RECORDAUDIO, OnUpdateOptionsRecordaudio)
ON_COMMAND(ID_OPTIONS_AUDIOFORMAT, OnOptionsAudioformat)
ON_COMMAND(ID_OPTIONS_PROGRAMOPTIONS_SAVESETTINGSONEXIT, OnOptionsProgramoptionsSavesettingsonexit)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_PROGRAMOPTIONS_SAVESETTINGSONEXIT, OnUpdateOptionsProgramoptionsSavesettingsonexit)
// ON_COMMAND(ID_OPTIONS_RECORDINGTHREADPRIORITY_NORMAL, OnOptionsRecordingthreadpriorityNormal)
// ON_COMMAND(ID_OPTIONS_RECORDINGTHREADPRIORITY_HIGHEST, OnOptionsRecordingthreadpriorityHighest)
// ON_COMMAND(ID_OPTIONS_RECORDINGTHREADPRIORITY_ABOVENORMAL, OnOptionsRecordingthreadpriorityAbovenormal)
// ON_COMMAND(ID_OPTIONS_RECORDINGTHREADPRIORITY_TIMECRITICAL, OnOptionsRecordingthreadpriorityTimecritical)
// ON_UPDATE_COMMAND_UI(ID_OPTIONS_RECORDINGTHREADPRIORITY_TIMECRITICAL, OnUpdateOptionsRecordingthreadpriorityTimecritical)
// ON_UPDATE_COMMAND_UI(ID_OPTIONS_RECORDINGTHREADPRIORITY_NORMAL, OnUpdateOptionsRecordingthreadpriorityNormal)
// ON_UPDATE_COMMAND_UI(ID_OPTIONS_RECORDINGTHREADPRIORITY_HIGHEST, OnUpdateOptionsRecordingthreadpriorityHighest)
// ON_UPDATE_COMMAND_UI(ID_OPTIONS_RECORDINGTHREADPRIORITY_ABOVENORMAL, OnUpdateOptionsRecordingthreadpriorityAbovenormal)
ON_COMMAND(ID_OPTIONS_TEMPDIR_WINDOWS, OnOptionsTempdirWindows)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_TEMPDIR_WINDOWS, OnUpdateOptionsTempdirWindows)
ON_COMMAND(ID_OPTIONS_TEMPDIR_INSTALLED, OnOptionsTempdirInstalled)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_TEMPDIR_INSTALLED, OnUpdateOptionsTempdirInstalled)
ON_COMMAND(ID_OPTIONS_TEMPDIR_USER, OnOptionsTempdirUser)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_TEMPDIR_USER, OnUpdateOptionsTempdirUser)
ON_COMMAND(ID_OPTIONS_RECORDAUDIOMICROPHONE, OnOptionsRecordaudiomicrophone)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_RECORDAUDIOMICROPHONE, OnUpdateOptionsRecordaudiomicrophone)
// ON_COMMAND(ID_OPTIONS_PROGRAMOPTIONS_DEFAULTPLAY, OnOptionsProgramoptionsDefaultplay)
// ON_UPDATE_COMMAND_UI(ID_OPTIONS_PROGRAMOPTIONS_DEFAULTPLAY, OnUpdateOptionsProgramoptionsDefaultplay)
// ON_COMMAND(ID_OPTIONS_AUDIOOPTIONS_AUDIOVIDEOSYNCHRONIZATION, OnOptionsSynchronization)
ON_WM_SETFOCUS()
ON_WM_ERASEBKGND()
ON_COMMAND(ID_OPTIONS_NAMING_AUTODATE, OnOptionsNamingAutodate)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_NAMING_AUTODATE, OnUpdateOptionsNamingAutodate)
ON_COMMAND(ID_OPTIONS_NAMING_ASK, OnOptionsNamingAsk)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_NAMING_ASK, OnUpdateOptionsNamingAsk)
// ON_COMMAND(ID_OPTIONS_PROGRAMOPTIONS_PRESETTIME, OnOptionsProgramoptionsPresettime)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
ON_REGISTERED_MESSAGE (WM_USER_RECORDSTART, OnRecordStart)
ON_REGISTERED_MESSAGE (WM_USER_RECORDINTERRUPTED, OnRecordInterrupted)
ON_REGISTERED_MESSAGE (WM_USER_GENERIC, OnUserGeneric)
ON_REGISTERED_MESSAGE (WM_USER_KEYSTART, OnKeyStart)
ON_MESSAGE(MM_WIM_DATA, OnMM_WIM_DATA)
ON_MESSAGE(WM_TRAY_ICON_NOTIFY_MESSAGE,OnTrayNotify)
ON_MESSAGE(WM_HOTKEY, OnHotKey)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CVscapView construction/destruction
CVscapView::CVscapView()
{
// TODO: add construction code here
watermerk();
}
CVscapView::~CVscapView()
{
}
BOOL CVscapView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
void CVscapView::OnDraw(CDC* pDC)
{
CVscapDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CVscapView printing
BOOL CVscapView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CVscapView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CVscapView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CVscapView diagnostics
#ifdef _DEBUG
void CVscapView::AssertValid() const
{
CView::AssertValid();
}
void CVscapView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CVscapDoc* CVscapView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CVscapDoc)));
return (CVscapDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CVscapView message handlers
void CVscapView::OnRegionRubber()
{
MouseCaptureMode=1;
}
void CVscapView::OnRegionPanregion()
{
DefineMode = 0;
CFixedRegion cfrdlg;
cfrdlg.DoModal();

MouseCaptureMode=0;
DefineMode = 0;

}
void CVscapView::OnRegionFullscreen()
{
// TODO: Add your command handler code here
MouseCaptureMode=2;

}
void CVscapView::OnPaint()
{
CPaintDC dc(this); // device context for painting
if (!doneOnce) {

((CMainFrame*) AfxGetMainWnd())->UpdateViewtype();
doneOnce=1;
}

DrawClientArea(m_hWnd, dc.m_hDC);
/*
//ver 2.26
//Draw Message msgRecMode
if (recordstate==0) {

CString msgRecMode;
CString msgRecAVI;
CString msgRecFlash;

msgRecAVI.LoadString(IDS_RECAVI);
msgRecFlash.LoadString(IDS_RECSWF);
if (RecordingMode == ModeAVI)
{
msgRecMode = msgRecAVI;
}
else
{
msgRecMode = msgRecFlash;
}


int xoffset =12 ;
int yoffset =12 ;
RECT tmodeRect;
SIZE Extent;
RECT rect;
::GetClientRect(this->m_hWnd,&rect );
//GetTextExtentPoint32( dc.m_hDC, LPCTSTR(msgRecMode), msgRecMode.GetLength(), &Extent);

Extent.cx = 140;
Extent.cy = 32;

CRect ExtentRect;
ExtentRect.left=0;
ExtentRect.right=Extent.cx;
ExtentRect.top=0;
ExtentRect.bottom=Extent.cy;

int xmove = (rect.right - rect.left + 1) - (Extent.cx) - xoffset;
//int ymove = (rect.bottom - rect.top + 1) - (Extent.cy) - yoffset;
int ymove = yoffset;
//ErrMsg("xmove %d",xmove);
tmodeRect.left= xmove;
tmodeRect.right = tmodeRect.left + Extent.cx ;
tmodeRect.top = ymove ;
tmodeRect.bottom = tmodeRect.top + Extent.cy ;
//dc.Rectangle( tmodeRect.left,tmodeRect.top,tmodeRect.right,tmodeRect.bottom);

//::Rectangle(hdc, tmodeRect.left - 3,tmodeRect.top - 3,tmodeRect.right + 3,tmodeRect.bottom + 3);
//::RoundRect(hdc, tmodeRect.left - 3,tmodeRect.top - 3,tmodeRect.right + 3,tmodeRect.bottom + 3,5,5);
//TextOut(hdc,tmodeRect.left,tmodeRect.top, LPCTSTR(msgRecMode), msgRecMode.GetLength());

LOGFONT textfont;
ZeroMemory(&textfont, sizeof(LOGFONT));
textfont.lfHeight = 11;
textfont.lfWidth = 7;
strcpy(textfont.lfFaceName,"Arial");

LPBITMAPINFO pbmiText = GetTextBitmap(&dc, &ExtentRect,2,&ExtentRect, &textfont, msgRecMode, NULL, NULL, RGB(255,255,255), DT_CENTER);
HBITMAP newbm = DrawResampleRGB(&dc, &CRect(tmodeRect),2, (LPBITMAPINFOHEADER) pbmiText, xmove, ymove);
if (pbmiText) {
GlobalFreePtr(pbmiText);
pbmiText = NULL;
}

}
*/

// Do not call CView::OnPaint() for painting messages
}
int CVscapView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here
versionOp = GetOperatingSystem();

CreateShiftWindow();

bits = 24;
nColors = bits;

compfccHandler = mmioFOURCC('M', 'S', 'V', 'C');
hLogoBM = LoadBitmap( AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP3));
pFrame = new CFlashingWnd;
CRect rect(0, 0, maxxScreen-1, maxyScreen-1);
pFrame->CreateFlashing("Flashing", rect);

//Ver 1.2
//cursordir default
char dirx[300];
GetWindowsDirectory(dirx,300);
CString windir(dirx);
cursordir = windir + "\\cursors";
//savedir default
savedir=GetProgPath();

//Ver 1.1
//SuggestRecordingFormat();
//SuggestCompressFormat();
//ver 1.6
initialSaveMMMode();
srand( (unsigned)time( NULL ) );
return 0;
}
void CVscapView::OnDestroy()
{
CView::OnDestroy();

// TODO: Add your message handler code here
//ver 1.2
DecideSaveSettings();

//ver 1.2
//UninstallMyKeyHook(hWndGlobal);
UnSetHotKeys();
//ver 1.2
finishTrayIconData();
DestroyShiftWindow();
if (compressor_info != NULL) {

free(compressor_info);
num_compressor = 0;
}
if (savedBitmap) {
DeleteObject(savedBitmap);
savedBitmap = NULL;
}

if (hLogoBM) {
DeleteObject(hLogoBM);
hLogoBM = NULL;
}

if (pFrame) {

pFrame->DestroyWindow();
delete pFrame;
}
if (pwfx) {

GlobalFreePtr(pwfx);
pwfx = NULL;
}
FreeVideoCompressParams();
FreeParamsUse();
finalRestoreMMMode();
FreeWaveoutResouces();
WaveoutUninitialize();
}
LRESULT CVscapView::OnRecordStart (UINT wParam, LONG lParam) {

CStatusBar* pStatus = (CStatusBar*) AfxGetApp()->m_pMainWnd->GetDescendantWindow(AFX_IDW_STATUS_BAR);
pStatus->SetPaneText(0,"Press the Stop Button to stop recording");
//if (minimizeOnStart == 1)
// AfxGetMainWnd()->ShowWindow(SW_MINIMIZE);
//ver 1.2
if (minimizeOnStart == 1)
::PostMessage(AfxGetMainWnd()->m_hWnd,WM_SYSCOMMAND,SC_MINIMIZE,0);
videodriver.Activate_video_driver(true,0,0,maxxScreen,maxyScreen);
buffer_drv=videodriver.CreateCommunicationBuffer(0);
videodriver.StartMirroring();
videodriver.HardwareCursor();
HDC hScreenDC = videodriver.GetDcMirror();
maxxScreen = GetDeviceCaps(hScreenDC,HORZRES);
maxyScreen = GetDeviceCaps(hScreenDC,VERTRES);
FixRectSizePos(&rc,maxxScreen, maxyScreen);
::InvalidateRect(NULL,NULL,true);


::ReleaseDC(NULL,hScreenDC);

// InstallMyHook(hWndGlobal,WM_USER_SAVECURSOR);


recordstate=1;
interruptkey = 0;

CWinThread * pThread = AfxBeginThread(RecordAVIThread, &tdata);
//Ver 1.3
if (pThread)
pThread->SetThreadPriority(threadPriority);
//Ver 1.2
AllowNewRecordStartKey = TRUE; //allow this only after recordstate is set to 1


return 0;
}
int matchSpecial(int keyCtrl,int keyShift,int keyAlt,int ctrlDown,int shiftDown,int altDown)
{
int ret = 1;


if ((keyCtrl) && (!ctrlDown))
ret = 0;
if ((keyShift) && (!shiftDown))
ret = 0;
if ((keyAlt) && (!altDown))
ret = 0;

if ((!keyCtrl) && (ctrlDown))
ret = 0;
if ((!keyShift) && (shiftDown))
ret = 0;
if ((!keyAlt) && (altDown))
ret = 0;

/*

if ((keyCtrl) && (ctrlDown))
{
if ((keyShift) && (shiftDown))
{
if ((keyAlt) && (altDown))
{
}
else if ((!keyAlt) && (!altDown))
{
}
else if (keyAlt)
ret = 0;
}
else if ((!keyShift) && (!shiftDown))
{
if ((keyAlt) && (altDown))
{
}
else if ((!keyAlt) && (!altDown))
{
}
else if (keyAlt)
ret = 0;
}
else if (keyShift)
ret = 0;
}
else if ((!keyCtrl) && (!ctrlDown))
{
if ((keyShift) && (shiftDown))
{
if ((keyAlt) && (altDown))
{
}
else if ((!keyAlt) && (!altDown))
{
}
else if (keyAlt)
ret = 0;
}
else if ((!keyShift) && (!shiftDown))
{
if ((keyAlt) && (altDown))
{
}
else if ((!keyAlt) && (!altDown))
{
}
else if (keyAlt)
ret = 0;
}
else if (keyShift)
ret = 0;
}
else if (keyCtrl)
ret = 0;
*/
return ret;
}
//ver 1.8
int UnSetHotKeys()
{

UnregisterHotKey(hWndGlobal,0);
UnregisterHotKey(hWndGlobal,1);
UnregisterHotKey(hWndGlobal,2);
UnregisterHotKey(hWndGlobal,3);
UnregisterHotKey(hWndGlobal,4);
UnregisterHotKey(hWndGlobal,5);
UnregisterHotKey(hWndGlobal,base_nid+0);
UnregisterHotKey(hWndGlobal,base_nid+1);
UnregisterHotKey(hWndGlobal,base_nid+2);
UnregisterHotKey(hWndGlobal,base_nid+3);
UnregisterHotKey(hWndGlobal,base_nid+4);
UnregisterHotKey(hWndGlobal,base_nid+5);
return 0;
}
int SetAdjustHotKeys()
{
int succ[6];
int ret = SetHotKeys(succ);
CString keystr;
CString msgstr;
CString outstr;
if (succ[0])
{
keyRecordStart = 100000;
keyRecordStartCtrl = 0;
keyRecordStartShift = 0;
keyRecordStartAlt = 0;
keystr.LoadString(IDS_STRINGSPRKEY);
msgstr.LoadString(IDS_STRING_UNSSC);
outstr.Format(msgstr,keystr);
//keystr = "Unable to set shortcuts for %d" + keystr;
MessageBox(NULL,outstr,"Note",MB_OK | MB_ICONEXCLAMATION);
}
if (succ[1])
{
keyRecordEnd = 100000;
keyRecordEndCtrl = 0;
keyRecordEndShift = 0;
keyRecordEndAlt = 0;
keystr.LoadString(IDS_STRINGSRKEY);

msgstr.LoadString(IDS_STRING_UNSSC);
outstr.Format(msgstr,keystr);
//keystr = "Unable to set shortcuts for %d" + keystr;
MessageBox(NULL,outstr,"Note",MB_OK | MB_ICONEXCLAMATION);
}
if (succ[2])
{
keyRecordCancel = 100000;
keyRecordCancelCtrl = 0;
keyRecordCancelShift = 0;
keyRecordCancelAlt = 0;
keystr.LoadString(IDS_STRINGCRKEY);
msgstr.LoadString(IDS_STRING_UNSSC);
outstr.Format(msgstr,keystr);
//keystr = "Unable to set shortcuts for %d" + keystr;
MessageBox(NULL,outstr,"Note",MB_OK | MB_ICONEXCLAMATION);
}
if (succ[3])
{
keyNext = 100000;
keyNextCtrl = 0;
keyNextShift = 0;
keyNextAlt = 0;

keystr.LoadString(IDS_STRINGNLKEY);

msgstr.LoadString(IDS_STRING_UNSSC);
outstr.Format(msgstr,keystr);
//keystr = "Unable to set shortcuts for %d" + keystr;
MessageBox(NULL,outstr,"Note",MB_OK | MB_ICONEXCLAMATION);

}
if (succ[4])
{
keyPrev = 100000;
keyPrevCtrl = 0;
keyPrevShift = 0;
keyPrevAlt = 0;
keystr.LoadString(IDS_STRINGPLKEY);

msgstr.LoadString(IDS_STRING_UNSSC);
outstr.Format(msgstr,keystr);
//keystr = "Unable to set shortcuts for %d" + keystr;
MessageBox(NULL,outstr,"Note",MB_OK | MB_ICONEXCLAMATION);

}
if (succ[5])
{
keyShowLayout = 100000;
keyShowLayoutCtrl = 0;
keyShowLayoutShift = 0;
keyShowLayoutAlt = 0;
keystr.LoadString(IDS_STRINGSHLKEY);
msgstr.LoadString(IDS_STRING_UNSSC);
outstr.Format(msgstr,keystr);
//keystr = "Unable to set shortcuts for %d" + keystr;
MessageBox(NULL,outstr,"Note",MB_OK | MB_ICONEXCLAMATION);

}
return ret;
}
int SetHotKeys(int succ[])
{
UnSetHotKeys();


for (int i =0 ;i<6 ;i++)
succ[i]=0;
int tstatus = 0;
BOOL ret;
//int nid = base_nid;
int nid = 0;
UINT modf = 0;
if (keyRecordStartCtrl)
modf |= MOD_CONTROL;

if (keyRecordStartShift)
modf |= MOD_SHIFT;

if (keyRecordStartAlt)
modf |= MOD_ALT;

if (keyRecordStart!=100000) {
ret = RegisterHotKey(hWndGlobal,nid,modf,keyRecordStart);
if (!ret)
succ[0] = 1;
}
nid++;
modf = 0;
if (keyRecordEndCtrl)
modf |= MOD_CONTROL;

if (keyRecordEndShift)
modf |= MOD_SHIFT;

if (keyRecordEndAlt)
modf |= MOD_ALT;

if (keyRecordEnd!=100000) {
ret = RegisterHotKey(hWndGlobal,nid,modf,keyRecordEnd);
if (!ret)
succ[1] = 1;
}
nid++;
modf = 0;
if (keyRecordCancelCtrl)
modf |= MOD_CONTROL;

if (keyRecordCancelShift)
modf |= MOD_SHIFT;

if (keyRecordCancelAlt)
modf |= MOD_ALT;

if (keyRecordCancel!=100000) {
ret = RegisterHotKey(hWndGlobal,nid,modf,keyRecordCancel);
if (!ret)
succ[2] = 1;
}
nid++;
modf = 0;
if (keyNextCtrl)
modf |= MOD_CONTROL;

if (keyNextShift)
modf |= MOD_SHIFT;

if (keyNextAlt)
modf |= MOD_ALT;

if (keyNext!=100000) {
ret = RegisterHotKey(hWndGlobal,nid,modf,keyNext);
if (!ret)
succ[3] = 1;
}
nid++;
modf = 0;
if (keyPrevCtrl)
modf |= MOD_CONTROL;

if (keyPrevShift)
modf |= MOD_SHIFT;

if (keyPrevAlt)
modf |= MOD_ALT;

if (keyPrev!=100000) {
ret = RegisterHotKey(hWndGlobal,nid,modf,keyPrev);
if (!ret)
succ[4] = 1;
}
nid++;
modf = 0;
if (keyShowLayoutCtrl)
modf |= MOD_CONTROL;

if (keyShowLayoutShift)
modf |= MOD_SHIFT;

if (keyShowLayoutAlt)
modf |= MOD_ALT;

if (keyShowLayout!=100000) {
ret = RegisterHotKey(hWndGlobal,nid,modf,keyShowLayout);
if (!ret)
succ[5] = 1;
}
return tstatus;
}
//ver 1.8
LRESULT CVscapView::OnKeyStart (UINT wParam, LONG lParam)
{

return 0;
}
LRESULT CVscapView::OnRecordInterrupted (UINT wParam, LONG lParam) {
//if (recordstate==0) return;

// UninstallMyHook(hWndGlobal);

//Ver 1.1
if (recordpaused) {
recordpaused = 0;
SetTitleBar("UltraScreenRecorder");
}

recordstate=0;

//Store the interrupt key in case this function is triggered by a keypress
interruptkey = wParam;

CStatusBar* pStatus = (CStatusBar*) AfxGetApp()->m_pMainWnd->GetDescendantWindow(AFX_IDW_STATUS_BAR);
pStatus->SetPaneText(0,"Press the Record Button to start recording");
Invalidate();
//ver 1.2
::SetForegroundWindow( AfxGetMainWnd()->m_hWnd );
AfxGetMainWnd()->ShowWindow(SW_RESTORE);

videodriver.StopMirroring();
videodriver.DesActivate_video_driver();
Sleep(500);
videodriver.RemoveCommunicationBuffer();
buffer_drv=NULL;
return 0;
}
//This function is called when the avi saving is completed
LRESULT CVscapView::OnUserGeneric (UINT wParam, LONG lParam) {
if (interruptkey==keyRecordCancel) {
{
//Perform processing for cancel operation
DeleteFile(tempfilepath);
if (recordaudio) DeleteFile(tempaudiopath);
return 0;
}

//Normal thread exit
//Prompt the user for the filename
char szFilter[100];
char szTitle[100];
char extFilter[30];
//ver 2.26
if (RecordingMode == ModeAVI)
{
strcpy(szFilter,"AVI Movie Files (*.avi)|*.avi||");
strcpy(szTitle,"Save AVI File");
strcpy(extFilter,"*.avi");
}
else
{
strcpy(szFilter,"FLASH Movie Files (*.swf)|*.swf||");
strcpy(szTitle,"Save SWF File");
strcpy(extFilter,"*.swf");
}


CFileDialog fdlg(FALSE,extFilter,extFilter,OFN_LONGNAMES,szFilter,this);

//static char BASED_CODE szFilter[] = "AVI Movie Files (*.avi)|*.avi||";
//static char szTitle[]="Save AVI File";
//CFileDialog fdlg(FALSE,"*.avi","*.avi",OFN_LONGNAMES,szFilter,this);



fdlg.m_ofn.lpstrTitle=szTitle;

if (savedir=="")
savedir=GetProgPath();

fdlg.m_ofn.lpstrInitialDir = savedir;

CString m_newfile;
CString m_newfileTitle;
if ((RecordingMode == ModeAVI) && (autonaming > 0))
{
savedir=GetProgPath();
//ErrMsg("hereh");
time_t osBinaryTime; // C run-time time (defined in <time.h>)
time( &osBinaryTime );
CTime ctime(osBinaryTime);
int day = ctime.GetDay();
int month = ctime.GetMonth();
int year = ctime.GetYear();
int hour = ctime.GetHour() ;
int minutes = ctime.GetMinute() ;
int second = ctime.GetSecond() ;
CString filestr;
//filestr.Format("%d%d%d_%d%d",day,month,year,hour,minutes);
filestr.Format("%d%d%d_%d%d_%d",day,month,year,hour,minutes,second);
fdlg.m_ofn.lpstrInitialDir = savedir;

m_newfile = savedir + "\\" + filestr + ".avi";
m_newfileTitle = savedir + "\\" + filestr + ".avi";
m_newfileTitle=m_newfileTitle.Left(m_newfileTitle.ReverseFind('\\'));
}
else
{

if(fdlg.DoModal() == IDOK)
{
m_newfile = fdlg.GetPathName();

m_newfileTitle = fdlg.GetPathName();
m_newfileTitle=m_newfileTitle.Left(m_newfileTitle.ReverseFind('\\'));
savedir = m_newfileTitle;
}
else {

DeleteFile(tempfilepath);
if (recordaudio) DeleteFile(tempaudiopath);
return 0;
}
}

//ver 2.26
if (RecordingMode == ModeFlash)
{
int lenx = m_newfile.GetLength();
if (((m_newfile.GetAt(lenx-1) == 'f') || (m_newfile.GetAt(lenx-1) == 'F')) &&
((m_newfile.GetAt(lenx-2) == 'w') || (m_newfile.GetAt(lenx-2)

Список литературы [ всего 30]


ЛИТЕРАТУРА
1. Батурин Ю.М., /Кодзишскии A.M. Компьютерные преступления и компьютерная безопасность. М.: Юридическая литература, 1991.
2. Банило ИЛ. О праве на информацию в Российской Федерации. М: Миннауки России и МИФИ, 1997.
3. Березин А.С, Петренко С.Л. Построение корпоративных защищенных виртуальных частных сетей // Конфидент. Защита Инфор¬мации, 2001. № 1.С. 54-61.
4. Бурков В.К, Грацинский Е.В., Дзюбко СИ. и др. Модели и механизмы управления безопасностью. М.: 2001.
5. Герасименко В. А., Малюк А.А. Основы защиты информации. М.:МОПО, МИФИ, 1997.
6. Глобальное информационное общество и проблемы информа¬ционной безопасности. // Материалы круглого стола. М.: Институт Европы РАН, 2001.
7. Гованус Г., Кинг P. MCSE Windows 2000 Проектирование безопасности сетей. Учебное руководство. М.: Изд-во «Лори», 2001.
8. Государственная политика информационной безопасности. // Российский юридический журнал. Екатсригбург. 2001.
9. Гузик С Зачем проводить аудит информационных систем? //Jet Dfefo online. 2000. № 10 (89).
10. Информационная безопасность России в условиях глобального информационного общества. // Сб. материалов Всероссийской кон¬ференции / Под ред. Л.В. Жукова. М.: Редакция журнала «Биз¬нес-безопасность», 2001.
11. Информационные вызовы национальной и международной бе¬зопасности / Под общ. ред. А.В. Федорова и В.П. Цыгичко. М., 2001.
13. Клещёв Н. Г., Федулов АЛ., Симонов В.М. и др. Телекоммуни¬кации. Мир и Россия. Состояние и тенденции развития. VI.: Радио и связь, 1999.
14. Кобзарь М.Т., ТрубачевА.П. Концептуальные основы совер¬шенствования нормативной базы оценки безопасности информаци¬онных технологий в России // Безопасность информационных тех¬нологий, 2000. .4° 4.
15. Кошелев А. «Защита сетей и firewall» КомпьютерПресс. 2000. №7. С. 44-48.
16. Крылов В.В. Информационные компьютерные преступления. М.: ИПФРЛ-М-НОРМА, 1997..
17. Курушин В.Д., Минаев В.А. Компьютерные преступления и информационная безопасность. М: Новый юрист, 1999.
18. Липаев В.В. Стандарты на страже безопасности информацион¬ных систем // PC WEEC/RE, 2000. № 30.
19. Ловцев Д.А., Сергеев Н.А. Управление безопасностью. М.: 2001.
20. Мамаев М., Петренко С. Технологии зашиты информации в Интернете. СПб.: Питер, 2002.
21. Минаев В.Л., Горошко И.В., Дубинин М.П. и др.: Информационные технологии управления в органах внутренних дел Под ред. профессора Минаева В.А. — М.: Академия управления МВД Рос¬сии, 1997.-704 с.
22. Общие критерии оценки безопасности информационных техно¬логий: Учебное пособие. Пер. с англ. яз. Е.А. Сидак Под ред. М.Т. Кобзаря, А.А. Сидака. М.:МГУЛ, 2001. 84с.
23. Олифер В.Г., Олифер НА. Новые технологии и оборудование IP-сетей. СПб.: BIIV-Санкт-Петербург, 2000.
24. ПанибратовЛ.П и др. Вычислительные системы, сети и телекоммуникации / Учебник под ред. А.П. Панибратова. М .: Финансы и статистика, 1998.
25. Приходько А.Я. Информационная безопасность в событиях и фактах. М.: 2001.
26. Прокушева А.П. и др. информационные технологии в коммерческой деятельности. М.: 2001.
27. Приходько А.Я. Словарь-справочник по информационной безопасности. М.: СИНТЕГ, 2001.
28. Романец Ю.В., Тимофеев ПА., Шаньгин В.Ф. Зашита информа¬ции в компьютерных системах и сетях. М.: Радио и Связь, 1999.
29. Судоплатов А.П., Пекарев СВ. Безопасность предприниматель¬ской деятельности: Практическое пособие. VI.: 2001.
30 Ярочкин В.Н. Безопасность информационных систем. М.: Ось-80, 1996.
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.0051
© Рефератбанк, 2002 - 2024