Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Русский_Проект: Изучение Visual Basic


Здравствуйте! Это последний выпуск рассылки в 2007 году.

Справочник по функциям WinAPI для Visual Basic 6.0

Сегодня мы познакомимся с функцией GetSystemPowerStatus.

Функция GetSystemPowerStatus

Declare Function GetSystemPowerStatus Lib "kernel32" ( _
          lpSystemPowerStatus As SYSTEM_POWER_STATUS) As Long

GetSystemPowerStatus получает информацию о состоянии питания компьютера, что особенно полезно при использовании ноутбуков для получения данных об источнике питания и заряде батарей.

Пример

' Добавим на форму несколько меток Label
    Dim power_status As SYSTEM_POWER_STATUS
    Dim txt As String

    If GetSystemPowerStatus(power_status) = 0 Then
        lblACStatus.Caption = "Ошибка"
    Else
        Select Case power_status.ACLineStatus
            Case 0
                lblACStatus.Caption = "Питание от батарей"
            Case 1
                lblACStatus.Caption = "Питание от сети"
            Case 255
                lblACStatus.Caption = "Неизвестный тип питания"
        End Select

        If power_status.BatteryFlag And 1 Then txt = txt & ", High (> 66%)"
        
        If power_status.BatteryFlag And 2 Then txt = txt & ", Low (< 33%)"
        If power_status.BatteryFlag And 4 Then txt = txt & ", Critical (< 5%)"
        If power_status.BatteryFlag And 8 Then txt = txt & ", Charging"
        If power_status.BatteryFlag And 128 Then txt = txt & ", No system battery"
        If power_status.BatteryFlag = 255 Then txt = txt & ", Unknown"
        If Len(txt) > 0 Then txt = Mid$(txt, 3)
        lblBatteryStatus.Caption = txt

        If power_status.BatteryFullLifeTime = -1 Then
            lblFullLifetime.Caption = "Неизвестно"
        Else
            lblFullLifetime.Caption = power_status.BatteryFullLifeTime & " seconds"
        End If

        If power_status.BatteryLifeTime = -1 Then
            lblRemainingLifetime.Caption = "Неизвестно"
        Else
            lblRemainingLifetime.Caption = power_status.BatteryLifeTime & " seconds"
        End If

        If power_status.BatteryLifePercent = 255 Then
            lblPercentLifetime.Caption = "Неизвестно"
        Else
            lblPercentLifetime.Caption = power_status.BatteryLifePercent & "%"
        End If
    End If

Справочник по функциям WinAPI для .NET Framework

Приведу такой же пример для функции GetSystemPowerStatus уже для .NET Framework. Взято с vb-helper.com

[Visual Basic]
Declare Function GetSystemPowerStatus Lib "kernel32" ( _
          ByRef lpSystemPowerStatus As SYSTEM_POWER_STATUS) As Long
[Visual Basic]
    Dim power_status As SYSTEM_POWER_STATUS
    If GetSystemPowerStatus(power_status) = 0 Then
        lblACStatus.Text = "Error"
    Else
        Select Case power_status.ACLineStatus
            Case 0
                lblACStatus.Text = "Battery"
            Case 1
                lblACStatus.Text = "On line"
            Case 255
                lblACStatus.Text = "Unknown"
        End Select

        Dim txt As String = ""
        If power_status.BatteryFlag And 1 Then txt &= ", High (> 66%)"
        If power_status.BatteryFlag And 2 Then txt &= ", Low (< 33%)"
        If power_status.BatteryFlag And 4 Then txt &= ", Critical (< 5%)"
        If power_status.BatteryFlag And 8 Then txt &= ", Charging"
        If power_status.BatteryFlag And 128 Then txt &= ", No system battery"
        If power_status.BatteryFlag = 255 Then txt &= ", Unknown"
        If txt.Length > 0 Then txt = txt.Substring(2)
        lblBatteryStatus.Text = txt

        If power_status.BatteryFullLifeTime = -1 Then
            lblFullLifetime.Text = "Unknown"
        Else
            lblFullLifetime.Text = power_status.BatteryFullLifeTime & " seconds"
        End If

        If power_status.BatteryLifeTime = -1 Then
            lblRemainingLifetime.Text = "Unknown"
        Else
            lblRemainingLifetime.Text = power_status.BatteryLifeTime & " seconds"
        End If

        If power_status.BatteryLifePercent = 255 Then
            lblPercentLifetime.Text = "Unknown"
        Else
            lblPercentLifetime.Text = power_status.BatteryLifePercent & "%"
        End If
    End If

Полное описание функции и пример для C# будет доступен зарегистрированным пользователям справочника.

Справочник по .NET Framework

Продолжаем знакомиться с новинками .NET Framework 2.0. Чтобы узнать полный объем диска, можно воспользоваться свойством DriveInfo.TotalSize

Синтаксис

public long TotalSize { get; }

Значение свойства

Полный объем диска в байтах.

Пример

DriveInfo d = new DriveInfo("d");
MessageBox.Show(String.Format("Объем диска {0, 15}", d.TotalSize));

ASP.NET 2.0

Может быть на сайте появится еще одна рубрика, посвященная программированию на ASP.NET 2.0. А пока поделюсь с вами одним советом, который может вам пригодится.

Если вы устанавливали на компьютере IIS уже после установки .NET Framework, то файлы ASPX не будут зарегистрированы для вашего сервера. Для ручной установки, которая может понадобиться, если был установлен до .NET Frameworkустановки веб-сервера IIS или по какой-либо другой причине, используется утилита командной строки aspnet_regiis.exe, которую можно найти в папке %WINDIR%Microsoft.NETFrameworkv2.0.50727.

Описание ключей утилиты

-i
Полная установка. Регистрирует ASP.NET 2.0 для сервера IIS и обновляет регистрацию для всех веб-приложений.
-ir
Только регистрирует ASP.NET 2.0 для сервера IIS. Веб-приложения продолжают использовать ранее установленную версию ASP.NET.
-s путь
Обновляет регистрацию для приложений, находящихся в директории путь и всех вложенных директориях.
-sn путь
Обновляет регистрацию для приложений, находящихся только в директории путь. Не затрагивает регистрацию приложений, находящихся во вложенных директориях.
-lv
Показывает список всех установленных версий ASP.NET.
-lk
Показывает список всех приложений и зарегистрированную для них версию ASP.NET.

Я сам столкнулся с этой проблемой и искал решение несколько часов. Надеюсь, мой совет съэкономит вам время.

Проект: Телефонные звонки

Продолжаем работать над проектом. С предыдущей задачей справились практически все. Напомню, что нужно было загрузить текстовый файл в список. Процедура стандартная и затруднений не должна вызывать. Но я еще просил разобраться с форматом файлов. Только пять человек прислали свои описания форматов. Как и в прошлый раз, путем жребия я выбрал одного победителя, который награждается одним из моих справочников. Победителем стал Алексей из Санкт-Петербурга. Итак, сначала код для загрузки файла в список

// Загружаем файл АТС в список
private void butLoadFileAts_Click(object sender, EventArgs e)
{
    listAts.Items.Clear();                  // очистим список

    string fileName = OpenPhoneTextFile();  // полное имя файла   
    int index = 11;                         //номер строки, с которой начинать

    // Если выбран файл, то загружаем его в список
    if (fileName != "")
    {
        string[] allLines = System.IO.File.ReadAllLines(fileName);

        for (int i = index; i < allLines.Length; i++)            
        {                
            listAts.Items.Add(allLines[i]);
        }
    }
 }

Загрузка файла конторы осуществляется аналогичным образом.

А формат файлов можно описать следующим образом

У файла ats.txt сначала идут 11 строк служебной информации. Далее 19 символов отводится на дату и время. 11 символов на продолжительность звонка (цифры дополняются пробелами слева). 8 символов на номер абонента (пробел и 7-значный номер телефона). Далее идут 14 пробелов. Потом 48 символов отводится для Абонента Б (11-значный номер+пробелы). Далее один символ отводится под код звонка.

У файла конторы 21 символ отводится на дату (19 символов даты + 2 пробела). На продолжительность отводится 8 символов (2-3 символа + пробелы). Номер звонка занимает 18 символов (10, 11, 12 цифр + пробелы). Общая длина строки 47 символов.

Ваша задача - перевести формат АТС в формат конторы, чтобы было удобно сравнивать два списка. Это является вашим следующим заданием.

Файлы проекта, которые служат учебным материалом для этой задачи можно скачать с сайта Проекта. Поехали!

С наступающим Новым годом и удачного вам программирования!


©2007 А.Климов
Русский_Проект

В избранное