Рейтинг@Mail.ru

Топ-5 программ на новом компьютере с ОС Windows

Опубликовано в Компьютеры и программы

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

Работа с *.INI файлами в VB.NET

Опубликовано в Программирование

Как правило, настраиваемые параметры приложения хранятся во внешних по отношению к программе расположениях. Имеется множество способов вынести настройки программы вне кода самой программы. Распространёнными способами являются: хранение параметров приложения в реестре Windows, в базах данных, в конфигурационных XML файлах, в файлах *.config или *.cfg, в специфических двоичных форматах и, конечно же, в *.ini файлах. Эти файлы мы сейчас и рассмотрим.

1Что такое INI-файлы

Что такое INI-файлы известно, наверное, каждому более-менее опытному пользователю операционной системы Windows. Зачастую файл с расширением *.INI – это самый быстрый и удобный способ вынести настраиваемые параметры приложения вне кода программы. Эти файлы имеют свою, довольно простую, структуру и, как правило, отличаются малыми размерами. Это обычные текстовые файлы, которые открываются даже в «Блокноте».

Вообще, INI-файл может иметь некоторые отступления от общепринятых норм, каждый разработчик определяет структуру и синтаксис файла для себя. Но есть некоторые общепринятые соглашения. Собственно, вот как выглядит структура INI-файла в общем виде:

; комментарий
# комментарий в стиле Unix

[Section1]
; комментарий 
key1=value_1
key2=value_2
  
[Section2]
;другой комментарий
key3=value_3 
;ещё один комментарий
key4=value_4

Видно, что *.INI файл может содержать:

  • комментарии;
  • заголовки разделов (секций);
  • параметры в виде пары «ключ-значение»;
  • пустые строки.

Пример INI-файла:

;;;;;;;;;;;;;;;;;;;;;;;;;;
; Copyright Soltau.ru ;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

[Settings]
height=600
width=800
lang=RU

2Создание разделов и ключей INI-файлас помощью Visual Basic .NET и kernel32.dll

Можно изобретать велосипед и создать свой разборщик и генератор для INI-файлов. Но мы поступим более рационально и приземлённо и воспользуемся готовым решением из самой ОС Windows.

Дело в том, что в поставку любой операционной системы семейства Windows входит динамическая библиотека kernel32.dll. Эта библиотека расположена в системном каталоге Windows/system32. Она имеет множество функций для доступа к API Windows. В том числе и для работы с INI-файлами. Описывать все его возможности нет смысла, т.к. их великое множество (вот, например, описание kernel32 на 500+ страниц). Посмотреть все методы библиотеки можно с помощью наших старых знакомых DllExportViewer или DependencyWalker.

Нас здесь интересуют всего два метода: GetPrivateProfileString() для чтения ключей и разделов INI-файлов и WritePrivateProfileString() для записи.

Напишем класс-обёртку для упрощённого доступа к функциям работы с файлами *.INI, предоставляемым библиотекой kernel32:

Код класса IniFile.vb для работы с INI-файлами (разворачивается)
Imports System.IO
Imports System.Runtime.InteropServices
Imports System.Text

Namespace Ini

    Public Class IniFile

#Region "ИМПОРТ DLL"

        ''' <summary>
        ''' Записывает ключ в заданный раздел INI-файла.
        ''' </summary>
        ''' <param name="section">Имя раздела.</param>
        ''' <param name="key">Имя ключа.</param>
        ''' <param name="value">Значение ключа.</param>
        ''' <param name="filePath">Путь к INI-файлу.</param>
        <DllImport("kernel32")>
        Private Shared Function WritePrivateProfileString(ByVal section As String, ByVal key As String, ByVal value As String, ByVal filePath As String) As Long
        End Function

        ''' <summary>
        ''' Считывает ключ заданного раздела INI-файла.
        ''' </summary>
        ''' <param name="section">Имя раздела.</param>
        ''' <param name="key">Имя ключа.</param>
        ''' <param name="[default]"></param>
        ''' <param name="retVal"></param>
        ''' <param name="size"></param>
        ''' <param name="filePath">Путь к INI-файлу.</param>
        ''' <remarks>С помощью конструктора записываем путь до файла и его имя. </remarks>
        <DllImport("kernel32")>
        Private Shared Function GetPrivateProfileString(ByVal section As String, ByVal key As String, ByVal [default] As String, ByVal retVal As StringBuilder, ByVal size As Integer, ByVal filePath As String) As Integer
        End Function

#End Region '/ИМПОРТ DLL

#Region "КОНСТРУКТОР"

        ''' <summary>
        ''' Имя файла.
        ''' </summary>
        Private IniPath As String

        ''' <summary>
        ''' Читаем ini-файл и возвращаем значение указного ключа из заданной секции. 
        ''' </summary>
        ''' <param name="iniPath"></param>
        Public Sub New(ByVal iniPath As String)
            Me.IniPath = New FileInfo(iniPath).FullName.ToString
        End Sub

#End Region '/КОНСТРУКТОР

#Region "МЕТОДЫ РАБОТЫ С INI-ФАЙЛАМИ"

        ''' <summary>
        ''' Проверяет, что заданный ключ существует в INI-файле.
        ''' </summary>
        ''' <param name="section">Имя раздела.</param>
        ''' <param name="key">Имя ключа.</param>
        Public Function KeyExists(ByVal section As String, ByVal key As String) As Boolean
            Return (Me.ReadKey(section, key).Length > 0)
        End Function

        ''' <summary>
        ''' Читает значение заданного ключа в заданном разделе INI-файла.
        ''' </summary>
        ''' <param name="section">Имя раздела.</param>
        ''' <param name="key">Имя ключа.</param>
        Public Function ReadKey(ByVal section As String, ByVal key As String) As String
            Dim retVal As New StringBuilder(&HFF)
            IniFile.GetPrivateProfileString(section, key, "", retVal, &HFF, Me.IniPath)
            Return retVal.ToString()
        End Function

        ''' <summary>
        ''' Создаёт заданный ключ в заданном разделе. Если раздел не существует, он будет создан.
        ''' </summary>
        ''' <param name="section">Имя раздела.</param>
        ''' <param name="key">Имя ключа.</param>
        ''' <param name="value">Значение ключа. Если NULL, то ключ будет удалён. Если String.Empty, то присвоится пустое значение.</param>
        Public Sub WriteKey(ByVal section As String, ByVal key As String, ByVal value As String)
            IniFile.WritePrivateProfileString(section, key, value, Me.IniPath)
        End Sub

        ''' <summary>
        ''' Удаляет заданный ключ из заданного раздела INI-файла.
        ''' </summary>
        ''' <param name="section">Имя раздела.</param>
        ''' <param name="key">Имя ключа.</param>
        Public Sub DeleteKey(ByVal section As String, ByVal key As String)
            Me.WriteKey(section, key, Nothing)
        End Sub

        ''' <summary>
        ''' Удаляет заданный раздел INI-файла.
        ''' </summary>
        ''' <param name="section">Имя раздела.</param>
        Public Sub DeleteSection(ByVal section As String)
            Me.WriteKey(section, Nothing, Nothing)
        End Sub

#End Region '/МЕТОДЫ РАБОТЫ С INI-ФАЙЛАМИ

    End Class  

End Namespace

Использовать класс IniFile можно, например, так:

Dim iniFile as New IniFile("config.ini")
iniFile.WriteKey("SECTION1", "KEY1", "12345")
If iniFile.KeyExists("SECTION1", "KEY1")
    MessageBox.Show("Ключ создан!")
    iniFile.DeleteKey("SECTION1", "KEY1")
    MessageBox.Show("Ключ удалён!")
End If
Подробнее ...

Как быстро запустить произвольную программу из командной строки Windows

Опубликовано в Полезные советы

Чтобы запустить графический редактор Paint достаточно нажать Win + R, ввести в поле mspaint и нажать кнопку Enter. А как запустить программу, не входящую в стандартный набор программ, так же быстро и просто? Давайте для примера будем запускать графический редактор Paint.NET аналогичным образом.

  1. Откроем Свойства системы Дополнительно Переменные среды.
  2. Находим переменную PATH, нажимаем на неё и на кнопку Изменить.
  3. Если у вас Windows XP или Windows 7, через точку с запятой добавляем путь к исполняемому файлу программы, например: c:\Program Files\Java\jdk1.8.0_05\bin\;c:\Program Files\Paint.NET\ и перезагрузим компьютер, чтобы операционная система прочитала данные о новой переменной среды. Если у вас Windows 10, то нажимаем кнопку Добавить и вводим то же самое; перезагружать не обязательно.
  4. Чтобы не вводить длинное имя запускаемого файла, в директории, которую мы указали, создадим с помощью блокнота файл pdn.bat с таким содержимым:
  5. start PaintDotNet.exe
  6. Теперь для запуска Paint.NET из командной строки достаточно набрать Win+R pdn Enter.
Добавление новой переменной среды для произвольной программы в Windows
Добавление новой переменной среды для произвольной программы в Windows
Подробнее ...

Как отключить учётную запись в Windows 10

Опубликовано в Полезные советы

Чтобы отключить учётную запись пользователя в Windows 10 без её удаления, необходимо запустить консоль от имени Администратора. Для отключения введите в консоль:

net user USERNAME /active:yes

и нажмите Ввод (Enter). Здесь USERNAME – имя пользователя, учётную запись которого необходимо отключить.

Для отключения учётной записи:

net user USERNAME /active:no
Подробнее ...

Как быстро импортировать функционал динамической библиотеки в свой проект

Опубликовано в Программирование

Часто перед .NET-программистом возникает задача: использовать функционал динамической библиотеки DLL, написанной другим разработчиком на неуправляемом коде. Подчас функционал этой библиотеки может быть весьма и весьма обширен. Вручную прописывать у себя в проекте каждый класс, функцию, константу и т.д. – очень долго. К счастью, существуют инструменты, частично автоматизирующие этот процесс. Об одном из них мы и поговорим.

Подробнее ...

Калькулятор битовых операций

Опубликовано в Приложения

Данная программа позволяет быстро переводить числа из десятичной в двоичную и в шестнадцатеричную системы счисления и производить над ними битовые операции, такие как NOT, AND, OR и XOR, а также побитовый сдвиг.

Подробнее ...

Как вернуть потерянный или украденный смартфон

Опубликовано в Интернет

Смартфон в наше время – это не роскошь, а необходимый атрибут личной и деловой жизни. Если он будет украден или потерян, это может сильно осложнить жизнь его владельцу. Но даже если вы не позаботились заблаговременно и не предусмотрели такую ситуацию, есть несколько способов, которые, вполне вероятно, помогут вам вернуть пропажу. Рассмотрим их для трёх самых популярных мобильных операционных систем – Android, iOS, Windows Mobile.

Подробнее ...
Подписаться на этот канал RSS