Страница: 1 |
Есть файл, в нем прога на VB (без всяхин наворотов), просто мат функция. Но каждый раз она разная, ее необходимо интерпритировать. Кто знает как?
Ну сохрани файл с расширением .vbs и запускай как сценарий. Если я не так понял - не ругай! Почитай любую книгу по конструированию компиляторов, обычно синтаксический разбор подробно описывается Написать компилятор не проблема, есть сотни примеров. Но по моему была какаято комманда, по крайней мере в qb которая позволяла запустить на выполнение просто прогу из файла, run кажется ... Может в VB.Net тоже что то такое есть? А-а-а-а! Понял. Используй "Shell" А еще, в библиотеке кодов я видел API функцию, помогающую определить завершило ли внешнее приложение свою работу. Что за shell? Наверно он имел ввиду функцию Shell() - запуск внешних программ Shell ( Pathname , [WindowStyle] ) Ага, пишешь Shell "C:\windows\format.exe C:", vbShowFocus und alles sind OK Если тебе нужно выполнить ТЕКСТ, то вот пример: В данном примере вам понадобятся следующие элементы: ComboBox, TextBox, Label, CommandButton. В ComboBox программа добавляет так называемые шаблоны, Label отображает текущее состояние выполнения кода, в TextBox'е содержится непосредственно текст, являющийся кодом программы, ну а CommandButton... и так понятно. Как ни жаль, но всех возможностей функции EbExecuteLine я не знаю. Как говорится, вам и карты в руки. Чуть не забыл. Вам понадобится дополнительный модуль в вашей программе. 'КОД МОДУЛЯ Public Function secret() As String secret = "this is a secret subroutine" End Function Public Sub secret2() MsgBox "this is a secret subroutine 2" End Sub 'КОД ФОРМЫ Option Compare Text Option Explicit Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Foo1 As Long, ByVal Foo2 As Long, ByVal fCheckOnly As Long) As Long ' For VB5 IDE 'Declare Function EbExecuteLine Lib "vba5.dll" (ByVal pStringToExec As Long, ByVal Foo1 As Long, ByVal Foo2 As Long, ByVal fCheckOnly As Long) As Long ' FOR Access 97/VBE.dll clients like Word 97 and Excel 97 'Declare Function EbExecuteLine Lib "vba332.dll" (ByVal pStringToExec As Long, ByVal Foo1 As Long, ByVal Foo2 As Long, ByVal fCheckOnly As Long) As Long Function FExecuteCode(stCode As String, Optional fCheckOnly As Boolean) As Boolean FExecuteCode = EbExecuteLine(StrPtr(stCode), 0&, 0&, Abs(fCheckOnly)) = 0 End Function Private Sub Combo1_Click() Text1.Text = Combo1.List(Combo1.ListIndex) End Sub Private Sub Command1_Click() Dim res As Boolean res = FExecuteCode(Text1.Text) Label1.Caption = "Status = " & res End Sub Private Sub Form_Load() Combo1.AddItem "?secret" Combo1.AddItem "msgbox secret" Combo1.AddItem "secret2" Combo1.AddItem "For x=0 to 5:?" & Chr$(34) & "hello " & Chr$(34) & "&x:next:beep" Combo1.AddItem "sendkeys " & Chr$(34) & "{TAB}" & Chr$(34) & ":sendkeys " & Chr$(34) & "{up}" & Chr$(34) Combo1.AddItem "shell " & Chr$(34) & "calc.exe" & Chr$(34) & ",vbNormalFocus" Combo1.AddItem "shell " & Chr$(34) & "c:\windows\explorer.exe ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" & Chr$(34) & ",vbNormalFocus" Combo1.AddItem "form1.text1.visible=false" Combo1.AddItem "form1.text1.visible=true" Combo1.AddItem "form1.combo1.listindex=1" Combo1.AddItem "msgbox app.Title" Combo1.AddItem "form1.combo1.listindex=1:form1.command1.value=true" Combo1.ListIndex = 0 Show End Sub Страница: 1 |
Вопрос: Нужно интерпретировать программу из внешнего файла
Добавлено: 11.05.04 20:01
Автор вопроса: Zareny_Pelmen
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #1
Добавлено: 11.05.04 20:04
Номер ответа: 2
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #2
Добавлено: 11.05.04 21:21
Номер ответа: 3
Автор ответа:
Zareny_Pelmen
Вопросов: 1
Ответов: 2
Профиль | | #3
Добавлено: 12.05.04 07:11
Номер ответа: 4
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #4
Добавлено: 12.05.04 07:20
Ну тогда тебе нужно разобраться с командами строки в VB6.exe
Номер ответа: 5
Автор ответа:
Alexander N
Вопросов: 21
Ответов: 44
Web-сайт:
Профиль | | #5
Добавлено: 12.05.04 13:32
Номер ответа: 6
Автор ответа:
Zareny_Pelmen
Вопросов: 1
Ответов: 2
Профиль | | #6
Добавлено: 12.05.04 17:18
Номер ответа: 7
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #7
Добавлено: 12.05.04 17:59
Номер ответа: 8
Автор ответа:
Alexander N
Вопросов: 21
Ответов: 44
Web-сайт:
Профиль | | #8
Добавлено: 12.05.04 18:42
Номер ответа: 9
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #9
Добавлено: 13.05.04 11:17
Номер ответа: 10
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #10
Добавлено: 13.05.04 18:06
To Alexander N: Не путай людей. Format имеет расширение .com