52628.fb2
Итак, изучение .NET Compact Framework подходит к концу. Мы с вами рассмотрели различные аспекты программирования для карманных компьютеров и смартфонов. Напоследок я хочу предложить вам несколько маленьких советов-кирпичиков, с помощью которых вы сможете построить свое новое приложение. Часть этих советов уже встречалась вам на страницах этой книги. Но, может быть, вы не обратили на них внимания или не помните, где искать нужный вам кусок кода. Поэтому я отобрал часть этих советов и поместил их в отдельную главу. Эту главу можно рассматривать как справочный материал
В папке Windows есть утилита CGACUTIL.EXE
, которая выводит номер версии установленной .NET Compact Framework. Если нужно программно узнать номер версии, то следует воспользоваться кодом, приведенным в листинге 14.1.
// Узнаем версию установленной .NET Compact Framework
txtAppDir.Text = Environment.Version.ToString();
Для получения версии операционной системы нужно вызвать уже свойство OSVersion
, как показано в листинге 14.2.
// Узнаем версию операционной системы
txtInfo.Text = Environment.OSVersion.ToString();
Получаемые значения приведены в следующем списке.
□ 3.0 — соответствует Pocket PC 2000/2002.
□ 4.20 — соответствует Pocket PC 2003.
□ 4.21 — соответствует Pocket PC 2003 SE.
□ 5.01 — соответствует Windows Mobile 5.0.
Иногда требуется узнать путь к файлу запущенного приложения. Для этого можно воспользоваться кодом из листинга 14.3.
using System.IO;
using System.Reflection;
txtAppDir.Text =
Path.GetDirectoryName(Assembly.GetExecutingAssemblу().GetModule()[0].
FullyQuelifiedName).ToString();
В этом примере после выбора соответствующего пункта в текстовом поле будет отображен полный путь к файлу запущенного приложения.
В главе, посвященной функциям Windows API, путь к специальным папкам отыскивался с помощью функции SHGetSpecialFolderPath
. Сторонники управляемого кода могут воспользоваться методом GetFolderPath
, который появился в .NET Compact Framework 2.0. С помощью перечисления Environment.SpecialFolder
можно получить пути к некоторым специальным папкам системы. Например, чтобы получить путь к папке Start
Up, можно воспользоваться кодом, приведенным в листинге 14.4.
txtInfo.Text =
Environment.GetFolderPath(Environment.SpecialFolder.Startup).ToString();
Чтобы узнать имя устройства, на котором запущено приложение достаточно вызвать метод GetHostName
, как показано в листинге 14.5.
txtInfo.Text = System.Net.Dns.GetHostName().ToString();
Чтобы узнать, какой режим экрана установлен на данный момент, достаточно получить свойство Bounds
, как показано в листинге 14.6.
txtInfo.Text =
Screen.PrimaryScreen.Bounds.Width + ":" + Screen.PrimaryScreen.Bounds.Height;
Зная ширину и высоту экрана, уже не составит труда понять, какой режим отображения используется в данный момент.
Стоит обратить особое внимание на класс Process
. С помощью данного класса очень удобно запускать любой файл, который будет открываться программой, сопоставленной с данным типом файла. Предположим, что необходимо воспроизвести музыкальный файл MP3, но при этом неизвестно, какая именно программа у пользователя отвечает за воспроизведение этих музыкальных файлов. В этом случае можно просто указать имя файла, и система сама запустит соответствующую программу. Соответствующий код приведен в листинге 14.7.
System.Diagnostics.Process.Start("\\My Music\\myfile.mp3");
Класс System.Diagnostics.Process появился в .NET Compact Framework 2.0. Для версии .NET Compact Framework 1.0 нужно использовать функцию API ShellExecuteEx.
Существует очень легкий и быстрый способ создания и отправки письма с использованием технологии, применяемой на веб-страницах. С помощью ключевого слова mailto
создается заготовка письма, в которой указываются автор сообщения, тема и текст письма. После этого запускается процесс, который в автоматическом режиме запускает нужную почтовую программу и отсылает письмо, как показано в листинге 14.8.
private void butSendMail_Сlick(object sender, EventArgs e) {
System.Diagnostics.Process.Start
("mailto:alexander.klimoff@gmail.com?subject=About Book", null);
}
У карманных компьютеров есть кнопки навигации, позволяющие управлять объектами на экране. Это кнопки со стрелками и кнопка ввода.
Чтобы узнать, на какую кнопку нажал пользователь, нужно переопределить событие OnKeyDown
. Для создания тестового приложения нужно разместить на форме строку состояния, в которой будет отображаться название нажатой кнопки. Соответствующий код приведен в листинге 14.9.
protected override void OnKeyDown(KeyEventArgs keyg) {
switch (keyg.KeyData) {
case Keys.Left:
sbaKeys.Text = "Left";
break;
case Keys.Right:
sbaKeys.Text = "Right";
break:
case Keys.Down:
sbaKeys.Text = "Down";
break;
case Keys.Up:
sbaKeys.Text = "Up";
break;
case Keys.Return:
sbaKeys.Text = "Return";
break:
default:
break;
}
}