Сегодня продолжим разговор о новинках, которые появились в .NET Framework 2.0. Рассмотрим метод GetDrives и свойство IsReady из класса DriveInfo. Метод GetDrives получает массив имен всех логических дисков на компьютере. Естественно, используя этот массив, мы можем пройтись по всем дискам и получить информацию о каждой диске. Но, чтобы не нарваться на ошибку, желательно воспользоваться свойством IsReady, который определяет доступность диска, например, можно определить наличие компакт-диска в CD-ROM. Берем на вооружение все вышесказанное и пишем следующий пример.
using System;
using System.IO;
class Test
{
public static void Main()
{
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
Console.WriteLine("Диск {0}", d.Name);
Console.WriteLine(" Тип диска: {0}", d.DriveType);
if (d.IsReady == true)
{
Console.WriteLine(" Полный размер диска: {0, 15} bytes ", d.TotalSize);
}
}
}
}
Описываемые метод и свойство я добавил в свой справочник по .NET Framework, доступный зарегистрированным пользователям. Кстати, вы можете бесплатно получить один выпуск справочника, если выполните одно условие. Вам необходимо выбрать любой пример, написанный на Visual Basic 6.0 с сайта Русский_Проект и портировать его на язык C# или VB.NET. Хочу обратить ваше внимание, что нужно, именно, портировать исходник, а не присылать похожий пример. Примеры можете присылать по адресу rusproject@mail.ru.
Удачного вам программирования!
четверг, 20 марта 2008 г.
среда, 12 марта 2008 г.
Перетаскивание строчек кода в IDE
Сегодня в блоге Сары Форд (надеюсь, все уже нашли адрес ее блога и подписались?) прочитал очень интересный совет.
Сначала вспомним, как обычно мы управляем строчками кода. Если нужно переместить строчки кода в другое место, то просто выделяем нужный фрагмент и перемещаем текст (а-ля Word). Если нужно скопировать кусочек текста, то мы сначала выделяем текст, выбираем команду Copy, щелкаем мышкой в другом месте редактора кода и сновы вызываем контекстное меню для команды Paste (либо пользуемся комбинациями клавиш). Но есть еще один интересный способ. Выделите строчку кода, затем нажмите на правую кнопку мыши и, удерживая ее, перетащите выделенную строчку в нужное место. Когда вы отпустите кнопку мыши, то
увидите всплывающее меню с командами "Move here, Copy here и Cancel." Очень удобно для быстрого копирования или перемещения кода. Возьмите на заметку. Счастливого вам программирования!
Сначала вспомним, как обычно мы управляем строчками кода. Если нужно переместить строчки кода в другое место, то просто выделяем нужный фрагмент и перемещаем текст (а-ля Word). Если нужно скопировать кусочек текста, то мы сначала выделяем текст, выбираем команду Copy, щелкаем мышкой в другом месте редактора кода и сновы вызываем контекстное меню для команды Paste (либо пользуемся комбинациями клавиш). Но есть еще один интересный способ. Выделите строчку кода, затем нажмите на правую кнопку мыши и, удерживая ее, перетащите выделенную строчку в нужное место. Когда вы отпустите кнопку мыши, то
увидите всплывающее меню с командами "Move here, Copy here и Cancel." Очень удобно для быстрого копирования или перемещения кода. Возьмите на заметку. Счастливого вам программирования!
воскресенье, 2 марта 2008 г.
Недавно в справочник добавил пример с применением функций SetPowerRequirement и ReleasePowerRequirement. С помощью этих функций можно сделать так, чтобы экран мобильного устройства не выключался, если долго не нажимать на кнопки или не пользоваться пером. Это может пригодиться, например, при просмотре видео. Приведу объявление одной функции на VB:
Declare Function SetPowerRequirement Lib "coredll.dll" (ByVal pvDevice As String, _ ByVal DeviceState As PowerState, _ ByVal DeviceFlags As Integer, _ ByVal pvSystemState As IntPtr, _ ByVal StateFlags As Integer) As IntPtr
Чтобы экран не выключался, нужно сделать так:
' Отключаем автоматическое выключение экрана
Public Sub Activate()
'request full power handle = SetPowerRequirement("BKL1:", CEDEVICE_POWER_STATE.D0, 1, IntPtr.Zero, 0)
End Sub
Более полное описание функций и примеры на C# и Visual Basic можно найти в справочнике по функциям Windows API.
Кстати, новость для тех, кто интересуется программированием для мобильных устройств. Microsoft поменяла главную страницу Windows Mobile Developer Center. Теперь на этой странице в более удобном виде собраны ресурсы для разработчика под платформу Windows Mobile. Рекомендую всем. (А вечером многие страницы Microsoft были недоступны. Надеюсь, это временное явление).
Declare Function SetPowerRequirement Lib "coredll.dll" (ByVal pvDevice As String, _ ByVal DeviceState As PowerState, _ ByVal DeviceFlags As Integer, _ ByVal pvSystemState As IntPtr, _ ByVal StateFlags As Integer) As IntPtr
Чтобы экран не выключался, нужно сделать так:
' Отключаем автоматическое выключение экрана
Public Sub Activate()
'request full power handle = SetPowerRequirement("BKL1:", CEDEVICE_POWER_STATE.D0, 1, IntPtr.Zero, 0)
End Sub
Более полное описание функций и примеры на C# и Visual Basic можно найти в справочнике по функциям Windows API.
Кстати, новость для тех, кто интересуется программированием для мобильных устройств. Microsoft поменяла главную страницу Windows Mobile Developer Center. Теперь на этой странице в более удобном виде собраны ресурсы для разработчика под платформу Windows Mobile. Рекомендую всем. (А вечером многие страницы Microsoft были недоступны. Надеюсь, это временное явление).
суббота, 23 февраля 2008 г.
Сегодня снова поговорим о новинках .NET Framework 2.0. В новом классе DriveInfo есть свойство VolumeLabel, которое позволяет получать или устанавливать метку тома диска. Данное свойство позволяет отказаться от вызова неуправляемых функций Windows API SetVolumeLabel и GetVolumeInformation. Описание свойства мы можете найти в моем справочнике, который можно скачать с моей страницы, а здесь я приведу лишь пример использования этого свойства:
DriveInfo di = new DriveInfo("d");
// Устанавливаем новую метку для диска D:
di.VolumeLabel = "DriveD";
// Получим метку тома
Console.WriteLine(new DriveInfo("d").VolumeLabel);
DriveInfo di = new DriveInfo("d");
// Устанавливаем новую метку для диска D:
di.VolumeLabel = "DriveD";
// Получим метку тома
Console.WriteLine(new DriveInfo("d").VolumeLabel);
воскресенье, 17 февраля 2008 г.
На прошлой неделе купил книгу Чарльза Петцольда Microsoft Windows Presentation Foundation. Базовый курс. Мне нравится стиль изложения материала этого писателя, поэтому в моей библиотеке есть практически все его книги. Советую и вам приобрести эту книгу и освоить новую технологию WPF.
А на моем сайте есть специальный раздел Книги, в котором вы найдете другие полезные и интересные произведения, связанные с .NET Framework.
А на моем сайте есть специальный раздел Книги, в котором вы найдете другие полезные и интересные произведения, связанные с .NET Framework.
четверг, 7 февраля 2008 г.
Лошадиная фамилия
Сегодня пришло письмо от одного клиента. Фамилия у него была весьма необычна. Девушка, которая обрабатывает письма клиентов, засомневалась, что фамилия настоящая и стала показывать письмо всем сотрудникам офиса. Там было написано, что человека зовут Бляблин. Возник спор по поводу такой фамилии - стоит ли выходить замуж за такого человека и так далее. Вечером пришел домой и решил немного погуглить. К моему удивлению, фамилия оказалась достаточно популярной и распространенной!
Счастливого вам программирования, господин Бляблин! )))
Счастливого вам программирования, господин Бляблин! )))
воскресенье, 27 января 2008 г.
Открыть папку, содержащую файл
Впрочем, кроме получения полного пути к файлу (смотри предыдущий совет), еще требуется быстро открыть саму папку, в которой содержится нужный файл проекта. В контекстном меню той же файловой закладки есть пункт Open Containing Folder. Эта команда позволяет мгновенно оказаться в нужной папке и произвести необходимые действия с файлом: поменять атрибуты файла, переименовать его и т.д.
P.S. Может есть смысл размещать эти советы на сайте http://netsources.narod.ru?
Счастливого вам программирования!
P.S. Может есть смысл размещать эти советы на сайте http://netsources.narod.ru?
Счастливого вам программирования!
Подписаться на:
Комментарии (Atom)