Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также любые проблемы программирования на различных макроязыках и в скриптовых средах)

Скриптовый язык LangMF

LangMF - бесплатный скриптовый язык программирования, основанный на ядре языка VBScript, но с большими усовершенствованиями и расширением возможностей последнего. LangMF объединяет простоту и лёгкость использования VBScript с мощью и универсальностью "настоящего" Visual Basic, а также имеет большой ряд специфических "вкусностей", разработанных специально и не присутствующих ни в Visual Basic, ни в VBScript.


Официальный сайт проекта - langmf.ru.

Официальный форум проекта - forum.langmf.ru.

Последняя версия LangMF всегда находится, как правило, здесь: langmf.ru/ftp/LangMF_setup.exe.

Различные файлы для скачивания, связанные с LangMF, и не только: langmf.ru/ftp/.


Помимо возможностей VBScript, LangMF обладает следующими основными преимуществами:

Установка

Для полной интерактивной установки запустите инсталлятор LangMF_setup.exe. После установки вы получите:

 

Hello, World!

Создайте текстовый файл с расширением mf и поместите в него следующий код:

' Скрипт всегда запускается с процедуры Load
' cmdLine - параметр, в который передаются аргументы командной строки
<#Module=mod>
Sub Load(cmdLine)
    MsgBox "Привет, LangMF!"
    endmf ' завершает выполнение скрипт-движком всех процессов и очищает все ресурсы
End Sub
<#Module>

Запустите скрипт двойным щелчком.

Как видно, по синтаксису - это обычный Visual Basic. Если вы уже знакомы с VBScript, Visual Basic, VBA, VB.NET или любыми другими диалектами Basic - вы и не заметите, что пишете на другом языке.

Компиляция скриптов

Для компиляции вам понадобится скачать файл LangMF_Real.exe (см. ссылки в начале статьи).

Сделайте резервную копию вышеприведённого скрипта, а затем выполните команду "Компилировать" контекстного меню файла скрипта. После этого откройте файл скрипта текстовым редактором, и вы увидите, что исходный код скрипта прочитать уже невозможно. Запустите откомпилированный mf-скрипт двойным щелчком, чтобы убедиться в его работоспособности.

Создайте рядом со скриптом текстовый файл make.ini следующего содержания:

[options]
type=exe
file=mf.exe

Выполните команду "Компилировать" контекстного меню файла скрипта. На этот раз вы получите исполняемый файл mf.exe, который будет работать и на машинах, где не установлен LangMF. Запустите mf.exe двойным щелчком, чтобы убедиться в его работоспособности. Примечание: первый запуск mf.exe на машине, где не установлен LangMF, потребует прав администратора.

 

Win32 API и графический интерфейс

Создайте текстовый файл с расширением mf и поместите в него следующий код:

Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Boolean
Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

<#Module=mod>
Function test(hwnd, lParam)
Dim tLen, sSave
  tLen = GetWindowTextLength(hwnd)
  sSave = Space(tLen)
  GetWindowText hwnd, sSave, tLen + 1
  form.List(1).AddItem "hWnd = " & CStr(hwnd) & vbTab & "Text = " & sSave
  Test = True
End Function

Sub Load(cmdLine)
  form.width = 4416
  form.height = 2940
  form.Center

  form.Add "List", 1
  form.List(1).move 60, 60, 4200, 2400
  
  form.NoMoveMouse = true
  form.Show
  
  EnumWindows sys.callback("test"), 0
End Sub
<#Module>

<#Form=form>
Sub Form_Unload()
  endmf
End Sub
<#Form>

Запустите скрипт и вы увидите форму со списком заголовков окон верхнего уровня, открытых в вашей системе в настоящий момент. Скрипт демонстрирует возможность вызова функций Win32 API с организацией обратного вызова (callback), а также лёгкость создания графического интерфейса.

Динамическое выполнение кода

Создайте текстовый файл с расширением vbs и поместите в него следующий код:

code = ""
code = code & "<#Module=mod>" & vbCrLf
code = code & "Sub Load(cmdLine)" & vbCrLf
code = code & "MsgBox ""Привет, LangMF!""
code = code & "endmf" & vbCrLf
code = code & "End Sub" & vbCrLf
code = code & "<#Module>" & vbCrLf
Set LMF = CreateObject("Atomix.LangMF")
LMF.Command code

Запустите скрипт двойным щелчком. Вы написали программу на VBScript, которая динамически исполняет код LangMF с помощью COM-сервера "Atomix.LangMF".

Запустите командный интерпретатор cmd.exe и выполните следующую команду:

"C:\Program Files\LangMF\LangMF.exe" $ for a=1 to 5 : msgbox a : next : sys.endmf

Вы динамически исполнили код LangMF из командной строки. Подобный приём может пригодиться в CMD/BAT файлах.

Кириллический синтаксис

Директива <#--AddRus> позволяет добавить поддержку написания имен переменных, классов, типов, функций и процедур на русском языке. Создайте текстовый файл с расширением mf и поместите в него следующий код:

<#--AddRus>
<#Module=mod>
Тип МойТип
    Масс(100) as long
    Числ as long
Конец Тип
'---------------------------------------
Процедура Load(cmdLine)
    Dim Объект as МойТип
    randomize timer
    Для Счётчик = 0 По 100
       Объект.Масс(Счётчик) = int(rnd*100)
    Дальше
    Сообщение Объект.Масс(50)
    Сообщение Объект.Числ
    EndMF
Конец Процедура
<#Module>

Запустите скрипт двойным щелчком, чтобы убедиться в его работоспособности. Примечание: возможно, такой кириллический синтаксис кому-то может показаться коверканьем языка (хотя, к примеру, в среде 1С:Предприятия это уже давно норма, и таким способом написаны сотни тысяч строк кода типовых и нетиповых конфигураций, поставляемых фирмой 1С и используемых повсеместно). Однако, директиву <#--AddRus> вполне можно использовать только ради объявления кириллических идентификаторов в коде, что действительно может быть весьма и весьма удобно, т.к. такие идентификаторы "документируют" сами себя своими именами. Например:

<#--AddRus>
<#Module=mod>
Sub Load(cmdLine)
    ТекстДляВывода = "значение"
    MsgBox ТекстДляВывода
    EndMF
End Sub
<#Module>

Примеры организации графических интерфейсов

После полной установки LangMF в каталоге C:\Program Files\LangMF\Examples вы найдёте свыше 100 примеров скриптов, которые демонстрируют различные возможности языка. А здесь далее - несколько скриншотов, которые позволят вам немного представить себе возможности LangMF по организации графических интерфейсов (имейте в виду, что LangMF - это "всего лишь" скриптовый язык).

 

Организация меню окна:


 

Использование OpenGL:

 

Отслеживание положения курсора мыши:

 

Градиентная заливка:

 

Использование скинов:

 

Кнопки в стиле Windows XP:

Людоговский Александр

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.