Platform plat = Platform.Unknown;

   switch (System.Environment.OSVersion.Platform) {

   case PlatformID.Win32NT:

    plat = Platform.Win32NT;

    break;

   case PlatformID.WinCE:

    plat = CheckWinCEPlatform();

    break;

   }

   return plat;

  }

  static Platform CheckWinCEPlatform() {

   Platform plat = Platform.WindowsCE;

   StringBuilder strbuild = new StringBuilder(200);

   SystemParametersInfо(SPI_GETPLATFORMTYPE, 200, strbuild, 0);

   string str = strbuild.ToString();

   switch (str) {

   case 'PocketPC':

    plat = Platform.PocketPC;

    break;

   case 'SmartPhone':

    // Note that the strbuild parameter from the

    // PInvoke returns 'SmartPhone' with an

    // upper case P. The correct casing is

    // 'Smartphone' with a lower case p.

    plat = Platform.Smartphone;

    break;

   }

   return plat;

  }

 }

 public enum Platform {

  PocketPC, WindowsCE, Smartphone, Win32NT, Unknown

 }

}

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace PlatformDetector_CS {

 public partial class Form1 : Form {

  public Form1() {

   InitializeComponent();

  }

  private void Form1_Load(object sender, EventArgs e) {

   try {

    MessageBox.Show('Платформа: ' + PlatformDetector.GetPlatform());

   } catch (Exception ex) {

    MessageBox.Show(ex.Message.ToString());

   }

  }

 }

}

Особое внимание следует обратить на комментарий. Параметр strbuild после вызова функции возвращает значение SmartPhone с большой буквой «P», хотя более правильным вариантом считается слово с маленькой буквой «p».

Пароли

Как вы, вероятно, знаете, пользователь может установить пароль на свой карманный компьютер. Для этого ему нужно зайти в раздел Password при помощи последовательности команд Start►Settings►Password и указать четырехсимвольный пароль. С помощью четырех функций API можно получить сведения о пароле и даже попытаться угадать его!

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

Листинг 13.2

// Функция для установления нового системного пароля

[DllImport('coredll.dll')]

private static extern bool SetPassword(string lpszOldpassword,

 string lspzNewPassword);

// Функция для активации или блокировки текущего пароля

[DllImport('coredll.dll')]

private static extern bool SetPasswordActive(bool bActive,

 string lpszPassword);

// Функция для определения текущего состояния пароля

[DllImport('coredll.dll')]

private static extern bool GetPasswordActive();

// Функция для проверки пароля [DllImport('coredll.dll')]

private static extern bool CheckPassword(string lpszPassword);

private void butCheckPass_Click(object sender, EventArgs e) {

 txtInfo.Text ='Активность пароля: ' + GetPasswordActive().ToString();

}

private void butNewPass_Click(object sender, EventArgs e) {

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату