Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить версию Windows через WinAPI. 
:(
    Опции темы
Deadly0
Дата 11.9.2011, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.10.2010

Репутация: нет
Всего: нет



Нужно получить версию Windows, используя WinAPI, а конкретно функцию GetVersionEx. Функция принимает структуру OSVERSIONINFOEX и в нее же пишет результат.

Структуру и вызов WinAPI функции сделал так:

Код

    [StructLayout(LayoutKind.Sequential)]
    public class OSVersionInfo
    {
        public uint dwOSVersionInfoSize;
        public uint dwMajorVersion;
        public uint dwMinorVersion;
        public uint dwBuildNumber;
        public uint dwPlatformId;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public String szCSDVersion;
    }
 
    class Kernel
    {
        [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
        public static extern bool GetVersionEx([In, Out] OSVersionInfo info);
    }


Далее пытаюсь вывести билд в консоль, но получаю 0.
Код

    class Program
    {
        static void Main(string[] args)
        {
            OSVersionInfo version = new OSVersionInfo();
            version.dwOSVersionInfoSize = (uint) Marshal.SizeOf(version);
            Kernel.GetVersionEx(version);
 
            Console.WriteLine(version.dwBuildNumber);
            Console.ReadKey();
        }
    }


Готовый проект с этим кодом во вложении.

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  api.rar 26,50 Kb
PM MAIL   Вверх
Deadly0
Дата 11.9.2011, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.10.2010

Репутация: нет
Всего: нет



Ошибка оказалась в кодировке. Нужно было указать ANSI.

Код

[DllImport("kernel32.dll", CharSet = CharSet.Ansi)]


Это сообщение отредактировал(а) Deadly0 - 11.9.2011, 12:27
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0401 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.