/// ошибки возвращается E_FAIL
///
[DllImport("aygshell")]
private static extern int Vibrate(int cvn, IntPtr rgvn, uint fRepeat,
uint dwTimeout);
///
/// Останавливает виброзвонок
///
/// S_OK сообщает об остановке виброзвонка. В случае
/// ошибки возвращается EFAIL
///
[DllImport("aygshell")]
private static extern int VibrateStop();
///
/// Получает сведения о возможности использования виброзвонка
///
/// Перечисление VIBRATEDEVICECAPS,
/// определяющее возможности воспроизведения виброзвонка
/// устройством.
///
[DllImport("aygshell")]
private static extern int VibrateGetDeviceCaps(VibrationCapabilities caps);
///
/// Используется функцией VibrateGetDeviceCaps для определения
/// возможности воспроизведения виброзвонка.
///
public enum VibrationCapabilities : int {
VDC_Amplitude,
VDC_Frequency,
}
private void mnuStopVibrate_Click(object sender, EventArgs e) {
StopVibrate();
}
private void mnuVibrate_Click(object sender, EventArgs e) {
StartVibrate();
}
///
/// Включаем виброзвонок
///
/// В успешном случае возвращается TRUE, в случае
/// ошибки - FALSE.
public static bool StartVibrate() {
int result = Vibrate(0, IntPtr.Zero, 0xffffffff, 0xffffffff);
if (result != 0) {
return false;
}
return true;
}
///
/// Останавливаем виброзвонок
///
/// В успешном случае возвращается TRUE, в случае
/// ошибки - FALSE.
public static bool StopVibrate() {
int result = VibrateStop();
if (result != 0) {
return false;
}
return true;
}
ВНИМАНИЕ
Приведенный код будет работать только на смартфонах. На форумах можно найти сообщения, что на устройствах под управлением PocketPC Phone Edition этот пример не работает, даже если указанное устройство поддерживает виброзвонок.
Глава 14
Кирпичики .NET Compact Framework
Итак, изучение .NET Compact Framework подходит к концу. Мы с вами рассмотрели различные аспекты программирования для карманных компьютеров и смартфонов. Напоследок я хочу предложить вам несколько маленьких советов-кирпичиков, с помощью которых вы сможете построить свое новое приложение. Часть этих советов уже встречалась вам на страницах этой книги. Но, может быть, вы не обратили на них внимания или не помните, где искать нужный вам кусок кода. Поэтому я отобрал часть этих советов и поместил их в отдельную главу. Эту главу можно рассматривать как справочный материал
Узнать версию .NET Compact Framework
В папке Windows есть утилита CGACUTIL.EXE
, которая выводит номер версии установленной .NET Compact Framework. Если нужно программно узнать номер версии, то следует воспользоваться кодом, приведенным в листинге 14.1.
Листинг 14.1
// Узнаем версию установленной .NET Compact Framework
txtAppDir.Text = Environment.Version.ToString();
Узнать версию операционной системы
Для получения версии операционной системы нужно вызвать уже свойство OSVersion
, как показано в листинге 14.2.
Листинг 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.
Листинг 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.
Листинг 14.4
txtInfo.Text =
Environment.GetFolderPath(Environment.SpecialFolder.Startup).ToString();
Читать дальше