Резидентная программа для Windows

Автор: Пользователь скрыл имя, 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

Работа содержит 1 файл

Пояснительная записка.docx

— 473.48 Кб (Скачать)

        {

            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.MenuItems[2].Enabled = true;

                    notifyIcon.ContextMenu.MenuItems[3].Enabled = false;

                    break;

                case ITEM_ACTION:

                    inter = Convert.ToInt32(textBox1.Text) * 1000;

                    timer1.Interval = inter;

                    timer1.Enabled = true;

                    textBox1.Enabled = false;

                    notifyIcon.ContextMenu.MenuItems[3].Enabled = true;

                    notifyIcon.ContextMenu.MenuItems[2].Enabled = false;

                    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 существует набор перегруженных  конструкторов для создания или  загрузки изображений. При загрузке содержимого файла анализируется  его формат (а вовсе не расширение!), и автоматически используется соответствующий  кодек. Определить, какой кодек (и  какой формат) был использован  при загрузке, можно с помощью  метода Image::GetRawFormat.

private Bitmap TakeScreenShot(Screen currentScreen)

        {

            Bitmap bmpScreenShot = new Bitmap(currentScreen.Bounds.Width,

                                              currentScreen.Bounds.Height,

                                              PixelFormat.Format32bppArgb); 

            Graphics gScreenShot = Graphics.FromImage(bmpScreenShot); 

            gScreenShot.CopyFromScreen(currentScreen.Bounds.X,

                                       currentScreen.Bounds.Y,

                                       0, 0,

                                       currentScreen.Bounds.Size,

                                       CopyPixelOperation.SourceCopy);

            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.ShowDialog() == DialogResult.OK)

            {

           textBox2.Text = folderBrowserDialog1.SelectedPath;

            }

            S = textBox2.Text;

      }

    }

}

  1. Тестирование  программы

       Запуск  программы: в трее появился значок, главное окно скрыто.

       

       Рисунок 2 - Системный трей

       Открываем контекстное меню и разворачиваем  окно.

       

       Рисунок 3 - Контекстное меню

       

       Рисунок 4 - Окно программы

       Меняем  частоту и выбираем путь сохранения файлов.

       

       Рисунок 5 - Выбор папки для сохранения.

       

       Рисунок 6 - Изменение параметров программы 

       Запускаем таймер и через некоторое время  открываем выбранную папку:

Рисунок 7 - Папка со снимками экрана

Рисунок 8 - Папка со снимками экрана через некоторое время

       Останавливаем таймер и скриншоты перестают  сохраняться в папку.

       Программа работает нормально.

Заключение

       В ходе выполнения курсового проекта  была создана резидентная программа, создающая снимки экрана с заданной периодичностью и сохраняющая их в выбранную пользователем папку. При запуске программа создает  в системном трее значок и не показывает свое окно. Другими словами, программа  работает в фоновом режиме. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Список  литературы

  1. Системное программное обеспечение / А.В. Гордеев, А.Ю.Молчанов. – СПб.: Питер, 2001. – 736 с.: ил.
  2. Харт, Джонсон, М. Системное программирование в среде Win32, 2-е изд.: Пер. с англ.: – М.: Издательский дом «Вильямс», 2001.– 464 с.: ил. – Парал. тит. англ.
  3. У. Моррей, К. Паппас. Создание переносимых приложений для Windows/ Пер. С англ. — СПб.: BHV— Санкт-Петербург, 1997.— 816 с.: ил.
  4. Сайт http://msdn.microsoft.com

Приложение  А. Листинг программы

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;

Информация о работе Резидентная программа для Windows