Автор: Пользователь скрыл имя, 20 Декабря 2011 в 03:03, курсовая работа
В данной курсовой работе рассмотрена программа-резидент, остающаяся в памяти после закрытия окна программы и обозначающая свое присутствие значком в трее.
Цель работы состоит в разработке программы-резидента, делающей снимок экрана с заданной периодичностью и сохраняющая файлы в выбранной папке.
Введение 5
1. Постановка задачи и ее решение 6
1.1. Формулировка задачи 6
1.2 Спецификация задачи 6
2 Техническая реализация алгоритма решения 6
2.1 Выбор языка и среды программирования 6
2.2 Описание алгоритмов и программы 6
2.3 Описание методов программирования 8
3 Тестирование программы 11
Заключение 13
Список литературы 14
Приложение А. Листинг программы 15
{
MenuItem menuItem = sender as MenuItem;
switch (menuItem.Text)
{
case ITEM_SHOW_WINDOW:
ShowDialog();
break;
case ITEM_HIDE_WINDOW:
Close();
break;
case ITEM_STOP:
timer1.Enabled = false;
textBox1.Enabled = true;
notifyIcon.ContextMenu.
notifyIcon.ContextMenu.
break;
case ITEM_ACTION:
inter = Convert.ToInt32(textBox1.Text) * 1000;
timer1.Interval = inter;
timer1.Enabled = true;
textBox1.Enabled = false;
notifyIcon.ContextMenu.
notifyIcon.ContextMenu.
break;
case ITEM_EXIT_APPLICATION:
//Убираем иконку из system tray
notifyIcon.Visible = false;
//Завершаем приложения
Application.Exit();
break;
}
}
Срабатывание таймера, создание и сохранение скриншота.
public string S = "";
public int i = 0;
public string
Ss = "";
private void timer1_Tick_1(object sender, EventArgs e)
{
Screen scr = Screen.PrimaryScreen;
Image img = TakeScreenShot(scr);
img.Save(@""+S+"\\screen" + i + ".jpg", ImageFormat.Jpeg);
i++;
}
Функция создания скриншота
Для хранения изображений в библиотеке GDI+ предназначен класс Image. Его потомки, классы Bitmap и Metafile, реализуют, соответственно, функциональность для работы с растровыми и векторными изображениями. Кстати, в документации .NET Framework SDK утверждается, что потомком Image является и класс Icon, но это не так: он унаследован от System.MarshalByRefObject. В иерархии классов GDI+ для C++ класса Icon не существует (все необходимые средства для работы с иконками находятся в Bitmap).
У
класса Bitmap существует набор перегруженных
конструкторов для создания или
загрузки изображений. При загрузке
содержимого файла
private Bitmap TakeScreenShot(Screen currentScreen)
{
Bitmap
bmpScreenShot = new Bitmap(currentScreen.Bounds.
Graphics
gScreenShot = Graphics.FromImage(
gScreenShot.CopyFromScreen(
return bmpScreenShot;
}
Функции кнопок на форме.
private void button1_Click(object sender, EventArgs e)
{Close();
}
private void button2_Click(object sender, EventArgs e)
{notifyIcon.Visible = false;
Application.Exit();
}
private void button3_Click(object sender, EventArgs e)
{if (folderBrowserDialog1.
{
textBox2.Text
= folderBrowserDialog1.
}
S = textBox2.Text;
}
}
}
Запуск программы: в трее появился значок, главное окно скрыто.
Рисунок 2 - Системный трей
Открываем контекстное меню и разворачиваем окно.
Рисунок 3 - Контекстное меню
Рисунок 4 - Окно программы
Меняем частоту и выбираем путь сохранения файлов.
Рисунок 5 - Выбор папки для сохранения.
Рисунок
6 - Изменение параметров программы
Запускаем таймер и через некоторое время открываем выбранную папку:
Рисунок 7 - Папка со снимками экрана
Рисунок 8 - Папка со снимками экрана через некоторое время
Останавливаем таймер и скриншоты перестают сохраняться в папку.
Программа работает нормально.
В
ходе выполнения курсового проекта
была создана резидентная программа,
создающая снимки экрана с заданной
периодичностью и сохраняющая их
в выбранную пользователем
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using
System.Drawing.Imaging;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
const string ICON_FILE_NAME = "ACDSee.ICO";
const string ITEM_SHOW_WINDOW = "Show window";
const string ITEM_HIDE_WINDOW = "Hide window";
const string ITEM_EXIT_APPLICATION = "Exit";
NotifyIcon notifyIcon = new NotifyIcon();
public Form1()
{
notifyIcon.Icon = new Icon(ICON_FILE_NAME);
notifyIcon.ContextMenu = CreateMenu();
notifyIcon.Visible = true;
InitializeComponent();
int inter = Convert.ToInt32(textBox1.Text) * 1000;