Перейти на главную страничку сайта (список статей, файлы для скачивания)
Возможно не все знают, что для создания небольшого приложения на VB.NET вполне достаточно самой инсталляции .NET Framework, т.к. она обеспечивает всё необходимое, включая компилятор. Иначе говоря, использование мощной и громоздкой интегрированной среды разработки Visual Studio от Microsoft является необходимостью далеко не всегда. Чтобы использовать описанную ниже методику, понадобится лишь простой текстовый редактор.
Иногда может быть полезно использовать небольшие приложения на .NET, чтобы заменить другие методы автоматизации, типа сценариев или пакетных файлов. Откомпилированная прикладная программа будет менее подвержена случайной модификации неквалифицированными пользователями и будет более защищена от любопытных глаз. Кроме того, библиотека классов .NET может предоставить возможности, которые отсутствуют в других средах автоматизации. Учитывая то, что .NET Framework становится всё более популярной, бесплатна и автоматически обновляется вместе с прочими компонентами Windows, использование такой методики становится довольно естественным и привлекательным для разработчика.
VBC компилятор - утилита командной строки, которая превратит ваш VB-код в исполняемый файл. Вы можете найти VBC компилятор по одному из этих путей:
%WINDIR%\Microsoft.NET\Framework\v1.1.4322\vbc.exe %WINDIR%\Microsoft.NET\Framework\v2.0.50727\vbc.exe
Примечание: в этих же папках находится и компилятор jsc.exe, который позволит вам писать приложения на JScript.NET. Параметры запуска компиляторов вы можете получить, выполнив команды vbc /? и jsc /?.
Простейшее консольное приложение на VB.NET может выглядеть следующим образом:
Module Test Sub Main() Console.WriteLine("Hello, World!") End Sub End Module
Или так:
Public Class Test Public Shared Sub Main() Console.WriteLine("Hello, World!") End Sub End Class
Чтобы откомпилировать консольное приложение, выполните команду наподобие такой:
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\vbc.exe" "c:\temp\test.vb" /out:"c:\temp\test.exe"
В данном случае исходный код (приведённый выше) содержится в текстовом файле test.vb, а исполняемый файл будет иметь имя test.exe. Поскольку исполняемый файл является консольным приложением, запускайте его из окна командного интерпретатора (иначе окно консоли будет захлопнуто прежде, чем вы успеете прочитать вывод программы).
Простейшее Windows-приложение на VB.NET может выглядеть следующим образом:
Module Test Sub Main() MsgBox("Hello, World!") End Sub End Module
Или так:
Public Class Test Public Shared Sub Main() MsgBox("Hello, World!") End Sub End Class
Чтобы откомпилировать Windows-приложение, выполните команду наподобие такой:
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\vbc.exe" "c:\temp\test.vb" /out:"c:\temp\test.exe" /target:winexe
Некоторые продвинутые текстовые редакторы позволяют настроить компиляцию и запуск .NET приложений в полуавтоматическом режиме, предоставляя таким образом своего рода мини-среду разработки приложений .NET. К таким редакторам относится, например, PrimalScript, в котором можно легко настроить компиляцию .NET приложения по нажатию Ctrl+F7.
Кроме того, можно настроить компиляцию файлов .vb прямо из контекстного меню проводника. О том, как настраивается контекстное меню проводника, можно прочитать здесь. При этом команда в реестре может выглядеть примерно так:
cmd /k ""C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\vbc.exe" "%1" /out:"%1.exe""
Пример получения переданных параметров командной строки в консольном приложении:
Module Arguments Sub Main(ByVal Args() As String) Console.WriteLine("Передано параметров - " & args.Length().ToString() & ".") Dim Arg As String For Each Arg In Args Console.WriteLine(Arg) Next End Sub End Module
Пример защиты от повторного запуска в Windows-приложении:
Module OneInstance Sub Main() ' Нахождение имени текущего процесса Dim ModuleName, ProcName As String ModuleName = System.Diagnostics.Process.GetCurrentProcess.MainModule.ModuleName ProcName = System.IO.Path.GetFileNameWithoutExtension(ModuleName) ' Получение всех процессов с таким же именем Dim Proc() As System.Diagnostics.Process Proc = System.Diagnostics.Process.GetProcessesByName(ProcName) If Proc.Length > 1 Then MsgBox("Такой процесс уже запущен!") Exit Sub Else MsgBox("Этот процесс запущен впервые!") End If End Sub End Module
Пример вызова API-функции (приложение, осуществляющее выход пользователя; запускайте с осторожностью):
Module Shutdown Private Declare Function ExitWindowsEx Lib "user32" _ (ByVal uFlags As Long, ByVal dwReserved As Long) As Long Private Enum ExitWindowsFlags Logoff = 0 'выход пользователя Shutdown = 1 'выключение системы Reboot = 2 'перезагрузка Force = 4 'принудительно End Enum Sub Main() ExitWindowsEx(ExitWindowsFlags.Logoff, 0&) End Sub End Module
Пример использования COM-объекта:
Module Test Sub Main() Dim objCOM As Object objCOM = CreateObject("WScript.Shell") objCOM.Popup("Hello, World!") End Sub End Module
Пример работы с WMI:
Module TestWMI Sub Main() Dim objService As Object objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2") Dim objOS As Object For Each objOS In objService.ExecQuery("SELECT * FROM Win32_OperatingSystem") MsgBox(objOS.Caption & vbCrLf & objOS.Version & vbCrLf & _ objOS.CSDVersion & vbCrLf & objOS.Locale & vbCrLf & objOS.SerialNumber) Next End Sub End Module
Пример создания графического интерфейса:
Imports System.Windows.Forms Public Class WinForm Inherits System.Windows.Forms.Form Private b As New Button() Public Sub New() MyBase.New() MyBase.Topmost = True MyBase.Text = "Кнопка с текущим временем" b.Dock = DockStyle.Fill b.Text = Now() AddHandler b.Click, AddressOf b_Click MyBase.Controls.Add(b) MyBase.Show() End Sub Public Sub b_Click(ByVal sender As Object, ByVal e As EventArgs) b.Text = Now() End Sub Public Shared Sub Main() System.Windows.Forms.Application.Run(New WinForm()) End Sub End Class
Перейти на главную страничку сайта (список статей, файлы для скачивания)
© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.