Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Динамическое выполнение кода vb6 Добавлено: 28.02.11 23:30  

Автор вопроса:  MISTER X | Web-сайт: studioartf.ru | ICQ: 463865965 
Народ можно ли на vb6 сделать чтобы можно было добавить и выполнить куски кода к исходной программе?
например есть текстбокс и кнопка.в текстбокс пишем MsgBox "YAHOO" нажимаем кнопку и код выполняется?
Нашел статью под VB.NET но дотнет мне ненадо...Можете помочь?может кто код сможет переделать?

вот ссылка http://www.codenet.ru/progr/vbasic/Dot-Net/Dynamic-Execution.php

а вот код:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
Dim objCodeCompiler As System.CodeDom.Compiler.ICodeCompiler = New _
VBCodeProvider().CreateCompiler ' создали объект нашего компилятора

Dim objCompilerParameters As New System.CodeDom.Compiler.CompilerParameters()
' а это параметры к нему (что-то типа imports, можно конечно и без этого,
' но тогда это все придется дописывать к программе самому пользователю)
objCompilerParameters.ReferencedAssemblies.Add("System.dll")
objCompilerParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll")
objCompilerParameters.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll")
' добавили нужные нам ссылки
objCompilerParameters.GenerateInMemory = True
' а также укажем что это все надо генерировать в памяти

Dim strCode As String = TextBox1.Text
' а это собственно наш код из текст бокса

Dim objCompileResults As System.CodeDom.Compiler.CompilerResults = _
objCodeCompiler.CompileAssemblyFromSource(objCompilerParameters, strCode)
' попытаемся скомпилировать все это дело
If objCompileResults.Errors.HasErrors Then
' если присутствуют какие-либо ошибки выведем пользователю первую
' можно бы было и все загнать в какой-нибудь listbox но было лень...
MsgBox("Error: Line>" & objCompileResults.Errors(0).Line.ToString & ", " & _
objCompileResults.Errors(0).ErrorText)
Exit Sub
End If

Dim objAssembly As System.Reflection.Assembly = objCompileResults.CompiledAssembly
' создаем сборку
' выполнение программы начнется с класса MainClass
Dim objTheClass As Object = objAssembly.CreateInstance("MainClass") If objTheClass _
Is Nothing Then
' если такового класса нет, то увы...
MsgBox("Can't load class...")
Exit Sub
End If
' а вот если он есть то вызываем его метод ExecuteCode и вперед...
Try
objTheClass.GetType.InvokeMember("ExecuteCode",
    System.Reflection.BindingFlags.InvokeMethod, _
Nothing, objTheClass, Nothing)
Catch ex As Exception
MsgBox("Error:" & ex.Message)
End Try
End Sub

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #1 Добавлено: 28.02.11 23:50
Пример на дотнете тебе никак не поможет.

Ответить

Номер ответа: 2
Автор ответа:
 MISTER X



ICQ: 463865965 

Вопросов: 31
Ответов: 190
 Web-сайт: studioartf.ru
 Профиль | | #2
Добавлено: 01.03.11 18:52
почему? на vb6 никак незя такое сделать?

Ответить

Номер ответа: 3
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #3
Добавлено: 01.03.11 19:38
Юзай Microsoft ScriptControl, он входит в комплект

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам