Определение платформы
Определение платформы
Если нужно определить, на какой платформе запущено ваше приложение, то здесь вам не обойтись без вызова функции Windows API SystemParametersInfo.
Для начала нужно создать новый класс PlatformDetector, в котором следует объявить функцию SystemParametersInfo и методы определения платформы. А в обработчике события Load основной формы надо вызвать метод GetPlatform, чтобы узнать платформу сразу же после загрузки приложения, как это показано в листинге 13.1.
Листинг 13.1
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace PlatformDetector_CS {
class PlatformDetector {
[DllImport("coredll.dll")]
private static extern bool SystemParametersInfo(int uiAction, int uiParam,
StringBuilder pvParam, int fWinIni);
private static int SPI_GETPLATFORMTYPE = 257;
public static Platform GetPlatform() {
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».
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Поддерживаемые платформы
Поддерживаемые платформы Мы стараемся сделать LFS как можно более универсальной. Однако, примите к сведению, что основная разработка ведется на платформе x86. Мы постараемся включить информацию о различиях компиляции для других платформ, например для PPC. Если вы
Выбор платформы для блога
Выбор платформы для блога Выбор платформы для блога — важный и ответственный шаг. По сути, это выбор между простотой и бесплатностью блогохостингов с ограниченными возможностями и полным контролем и полным наборомфункционала автономных блогов, но с необходимостью
Глава 20. Возможности, зависимые от платформы
Глава 20. Возможности, зависимые от платформы В данной главе мы рассмотрим некоторые доступные программистам Qt возможности, которые зависят от платформы. Мы начнем с рассмотрения способов доступа к таким «родным» программным интерфейсам, как Win32 API в системе Windows, Carbon в
14.9.5. Определение текущей платформы или операционной системы
14.9.5. Определение текущей платформы или операционной системы Если программа хочет знать, в какой операционной системе исполняется, то может опросить глобальную константу RUBY_PLATFORM. В ответ будет возвращена загадочная строка (что-то вроде i386-cygwin или sparc-solaris2.7), содержащая
Главные компоненты платформы .NET (CLR, CTS и CLS)
Главные компоненты платформы .NET (CLR, CTS и CLS) Теперь, когда вы знаете о некоторых преимуществах, обеспечиваемых .NET, давайте рассмотрим три ключевых (и взаимосвязанных) компонента, которые и обеспечивают эти преимущества: CLR, CTS и CLS. С точки зрения программиста .NET может
Взаимодействие с процессами в рамках платформы .NET
Взаимодействие с процессами в рамках платформы .NET Хотя процессы и потоки сами по себе не являются чем-то новым, способы взаимодействия с этими примитивами в рамках платформы .NET существенно изменены (к лучшему). Чтобы успешно пройти путь к пониманию приемов построения
Алгоритмы и платформы
Алгоритмы и платформы В обсуждении быстродействия алгоритмов мы до сих пор не затрагивали вопросов, касающихся операционной системы и оборудования компьютера, на котором выполняется реализация алгоритма. О-нотация справедлива только для какой-то виртуальной
Память на сервере (все платформы)
Память на сервере (все платформы) Оценка памяти сервера включает множество факторов.* Работа сервера Firebird. Сервер Firebird осуществляет эффективное использование ресурсов сервера. Суперсервер (Superserver) после старта использует приблизительно 2 Мбайта памяти. Классический
Смешанные платформы
Смешанные платформы Архитектура Firebird позволяет клиентам, запущенным в одной операционной системе, получить доступ к серверу Firebird, выполняющемуся на платформе и в операционной системе, отличных от клиентских. Часто используемый вариант- одновременный запуск нескольких
Платформы для операционных систем
Платформы для операционных систем Платформы сервера Firebird включают следующие операционные системы, но не ограничиваются только ими.* Linux, FreeBSD и другие варианты ОС UNIX.* Платформы Microsoft Windows, поддерживающие сервисы: NT 4, Windows 2000 (сервер или рабочая станция), XP Professional и Server 2003.
Защита, основанная на возможностях платформы
Защита, основанная на возможностях платформы Тот уровень защиты, основанный на платформе, который вы можете использовать при инсталляции вашего сервера базы данных, зависит от двух факторов: как хорошо платформа операционной системы и ее файловая система могут защитить
Платформы Microsoft Windows
Платформы Microsoft Windows Инсталляции сервера Windows являются столь безобразно сложными в плане безопасности, что требования высокой защищенности могут просто полностью исключить Windows в качестве платформы для установки серверов базы данных, в которых оценка и отслеживание
Системные платы для платформы AMD Олег Нечай
Системные платы для платформы AMD Олег Нечай Опубликовано 02 июля 2010 года В первой части этого обзора было рассказано про основные технические характеристики наборов системной логики AMD и NVIDIA для процессоров AMD Phenom II и Athlon II. Здесь же мы поговорим о