background img

The New Stuff

Открытие и закрытие лотка CD-привода

Сегодня мы будем писать приложение которое будет открывать и закрывать лоток дисковода =) Приложение почти бесполезное но некоторым людям очень поможет (так как помогло мне, потому что системник так размещен что плохо добраться к кнопке дисковода) )
Как будет работать наше приложение: при запуске в трейе появится иконка (у меня диска) при нажатии на нее ЛКМ лоток привода откроется, ПКМ  - закроется и при нажатии на ролик мыши откроется окно с настройками. Вот и все что предстоит нам сделать!
И так приступим!
1. Запускаем Visual Studio 
2. Создаем WinForms приложение 
3. Переходим к коду нажав F7
4. Для того чтоб обратится к приводу нам нужно использовать WinAPI для этого подключим дополнительный неймспейс 
using System.Runtime.InteropServices; //для роботы с winAPI
5. Подключаем нужную нам для роботы dll библиотеку
[DllImport("winmm.dll", EntryPoint = "mciSendStringA")]
public static extern int mciSendString(string lpstrCommand,
string lpstrReturnString, int uReturnLength, int hwndCallback);
6. Переключаемся в конструктор и с панели инструментов добавляем на форму notifyicon, обрабатываем для его события MouseClick и пишем следующий код
if (e.Button == MouseButtons.Left)
{
notifyIcon1.Text = "Лоток открыт, положите в его диск" + '\n' +
"и клацните ПКМ по значку";
notifyIcon1.Icon = new Icon("DVD.ico");
mciSendString("set CDAudio door open", null, 127, 0);
}
if (e.Button == MouseButtons.Right)
{
notifyIcon1.Text = "Лоток закрыт!" + '\n' + "Клацните ЛКМ для эго открытия.";
notifyIcon1.Icon = new Icon("DVD-R.ico");
mciSendString("set CDAudio door closed", null, 127, 0);
}
if (e.Button == MouseButtons.Middle)
{
if (WindowState == FormWindowState.Normal)//если оно развернуто
{
//сохраняем текущее состояние
_OldFormState = WindowState;
//сворачиваем окно
WindowState = FormWindowState.Minimized;
//скрываться в трей оно будет по событию Resize (изменение размера),
//которое сгенерировалось после минимизации строчкой выше
}
else//в противном случае
{
Show();
//и показываем на нанели задач
//разворачиваем (возвращаем старое состояние "до сворачивания")
WindowState = _OldFormState;
}
}
7. Переключаемся в конструктор добавляем на форму checkBox -  при его включение наша прогина переместится в автозагрузки и будет запускаться вместе с ОС windows.
8. Переключаемся в редактор кода и пишем вот этот код
private void Autorun()
{
if (checkBoxAutoran.Checked == true)
{
Microsoft.Win32.RegistryKey Key =
Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\", true);
Key.SetValue("имя прогины", "\\имя прогины.exe");
Key.Close();
}
else
{
Microsoft.Win32.RegistryKey key =
Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
key.DeleteValue("имя прогрины", false);
key.Close();
}
}
Здесь идет проверка на активность нашего checkBox_а. Если он активен то добавить программу в автозагрузки и присвоить ей некое имя в противном случае удалить с реестра автозагрузки.
Я еще добавил сохранение настроек про которое я уже писал, в общем можно еще много разных приколов добавить но это уже придумывайте сами) Вот как отображается программа у меня


В данной статье я вам показал как работать с WinAPI в C# и как работать с трейем. Если у вас возникнут какие то вопросы или будет что то непонятно с кодом пишите мне на почту или в комментариях, с радостью отвечу. На этом все надеюсь вам понравилось) Удачи в ПРОграммирование!
Скачать проект.
Сегодня мы будем писать приложение которое будет открывать и закрывать лоток дисковода =) Приложение почти бесполезное но некоторым людям очень поможет (так как помогло мне, потому что системник так размещен что плохо добраться к кнопке дисковода) )
Как будет работать наше приложение: при запуске в трейе появится иконка (у меня диска) при нажатии на нее ЛКМ лоток привода откроется, ПКМ  - закроется и при нажатии на ролик мыши откроется окно с настройками. Вот и все что предстоит нам сделать!
И так приступим!
1. Запускаем Visual Studio 
2. Создаем WinForms приложение 
3. Переходим к коду нажав F7
4. Для того чтоб обратится к приводу нам нужно использовать WinAPI для этого подключим дополнительный неймспейс 
using System.Runtime.InteropServices; //для роботы с winAPI
5. Подключаем нужную нам для роботы dll библиотеку
[DllImport("winmm.dll", EntryPoint = "mciSendStringA")]
public static extern int mciSendString(string lpstrCommand,
string lpstrReturnString, int uReturnLength, int hwndCallback);
6. Переключаемся в конструктор и с панели инструментов добавляем на форму notifyicon, обрабатываем для его события MouseClick и пишем следующий код
if (e.Button == MouseButtons.Left)
{
notifyIcon1.Text = "Лоток открыт, положите в его диск" + '\n' +
"и клацните ПКМ по значку";
notifyIcon1.Icon = new Icon("DVD.ico");
mciSendString("set CDAudio door open", null, 127, 0);
}
if (e.Button == MouseButtons.Right)
{
notifyIcon1.Text = "Лоток закрыт!" + '\n' + "Клацните ЛКМ для эго открытия.";
notifyIcon1.Icon = new Icon("DVD-R.ico");
mciSendString("set CDAudio door closed", null, 127, 0);
}
if (e.Button == MouseButtons.Middle)
{
if (WindowState == FormWindowState.Normal)//если оно развернуто
{
//сохраняем текущее состояние
_OldFormState = WindowState;
//сворачиваем окно
WindowState = FormWindowState.Minimized;
//скрываться в трей оно будет по событию Resize (изменение размера),
//которое сгенерировалось после минимизации строчкой выше
}
else//в противном случае
{
Show();
//и показываем на нанели задач
//разворачиваем (возвращаем старое состояние "до сворачивания")
WindowState = _OldFormState;
}
}
7. Переключаемся в конструктор добавляем на форму checkBox -  при его включение наша прогина переместится в автозагрузки и будет запускаться вместе с ОС windows.
8. Переключаемся в редактор кода и пишем вот этот код
private void Autorun()
{
if (checkBoxAutoran.Checked == true)
{
Microsoft.Win32.RegistryKey Key =
Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\", true);
Key.SetValue("имя прогины", "\\имя прогины.exe");
Key.Close();
}
else
{
Microsoft.Win32.RegistryKey key =
Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
key.DeleteValue("имя прогрины", false);
key.Close();
}
}
Здесь идет проверка на активность нашего checkBox_а. Если он активен то добавить программу в автозагрузки и присвоить ей некое имя в противном случае удалить с реестра автозагрузки.
Я еще добавил сохранение настроек про которое я уже писал, в общем можно еще много разных приколов добавить но это уже придумывайте сами) Вот как отображается программа у меня


В данной статье я вам показал как работать с WinAPI в C# и как работать с трейем. Если у вас возникнут какие то вопросы или будет что то непонятно с кодом пишите мне на почту или в комментариях, с радостью отвечу. На этом все надеюсь вам понравилось) Удачи в ПРОграммирование!
Скачать проект.

0 коммент.:

Отправить комментарий

Popular Posts