buenas tardes a todos queridos elhacker, pues pensando que sabia bastante de este lenguaje vb.net pero valla que estaba equivocado, descubri estos 2 namespaces muy interesantes
(reflection,codeDOM) y me gustaria q vieran 1 ejemplo y os subire unas pics de como puedo crear un programa, que es capas de compilar tambien!
codigo usado en el compilador dinamico
todos estos examples son pruebas que realizo, para incorporar los modulos a mi programa principal (http://foro.elhacker.net/net/mi_software_fdt-t366926.15.html (http://foro.elhacker.net/net/mi_software_fdt-t366926.15.html)) y permita que programadores puedan crear scripts potentes, y darle mayor dinamismo a la plataforma :D
dim w as new form()
dim p as new label()
w.suspendlayout()
p.autosize=true
p.location = new point(117,128)
p.text="soy el primer label creado dinamicamente"
p.tabindex=0
w.autoscaledimensions=new sizeF(6.0!,13.0!)
w.autoscalemode=AutoScaleMode.Font
w.ClientSize = New Size(284, 262)
w.text="Soy el primer form creado dinamicamente"
w.resumelayout(false)
w.PerformLayout()
w.controls.add(p)
w.show()
y una muestra :D
(http://i1206.photobucket.com/albums/bb451/spiritdead/prueba1.jpg)
uso namespace Reflection y CodeDOM!
muy bueno el CodeDom.
Aqui un bello ejemplo, incluso crea variables ;D lo que estaba buscando.
http://www.codeproject.com/Articles/12852/Compile-and-Run-VB-NET-Code-using-the-CodeDom
Saludos.
de ahi me guie, pero yo expandi el codigo, añadi mas librerias, y optimize muchisimo mas el codigo :) porque ese no permite el uso de sintaxis de winform, ni drawing XD
umm, si puedes postea un ejm pequeño.
Saludos.
bueno continuo mejorando, añadiendole eventos,etc y estoy comenzando la implementacion en mi proyecto despues de largas pruebas 1 ejemplo
(https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-snc7/458654_521488051210335_1549601364_o.jpg)
aca 1 foto de una correcta compilacion
(https://fbcdn-sphotos-f-a.akamaihd.net/hphotos-ak-ash4/330443_521495921209548_1530313659_o.jpg)
aca esta 1 version mas actual, aun sigo mejorando la interface y añadiendo mas propiedades y opciones
(https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-ash3/615750_521643304528143_1152062499_o.jpg)
¿Con que te refieres a scripts potentes?
Si la idea es poder extender el programa, entonces define un sistema de plugins :P
Saludos
Una consulta, se puede modificar una variable declarada en el exe mediante este método.
Por ejem incrementar una variable contador desde un script. Estoy buscando info :(
Saludos.
Cita de: Maurice_Lupin en 4 Octubre 2012, 17:23 PM
Una consulta, se puede modificar una variable declarada en el exe mediante este método.
Por ejem incrementar una variable contador desde un script. Estoy buscando info :(
Saludos.
la verdad no te sabria responder, aun estoy experimentando con el namespace codeDOM y que yo sepa creo que no, ya que es como compilar 1 .exe completo, solamente q yo los genero en memoria para evitar crear tantos exe
Cita de: Novlucker en 2 Octubre 2012, 17:59 PM
¿Con que te refieres a scripts potentes?
Si la idea es poder extender el programa, entonces define un sistema de plugins :P
Saludos
si supieras que estoy buscando el "metodo" para permitir plugins instalables como hace el firefox, pero mis conocimientos no llegan a ese nivel, que al instalar 1 complemento modifique el .exe original realmente es dificil :/ si lograra conseguir 1 ejemplo por mas minimo que fuera podria tener 1 idea y poder explorarla hasta mejorarle como estoy haciendo con el namespace codeDOM y reflection
Buenas spiritdead,
te queria preguntar si la clase para crear subprogramas dentro del programa original permite interactuar con clases incluidas dentro del proyecto. Es decir, ¿Podría llamar a cierta clase incluida en el proyecto utilizando la clase que mencionas?.
Gracias
buscando en google:
http://www.dreamincode.net/forums/topic/110542-plug-ins/
http://www.divelements.co.uk/net/articles/plugins/plugins.asp
http://geekswithblogs.net/WTFNext/archive/2009/05/06/how-to-create-a-plugin-architecture-in-vb.net.aspx
http://vbnotebookfor.net/2007/10/09/how-to-create-application-plug-ins-in-vbnet/
Ahora a leer se ha dicho :(
Saludos.
Cita de: spiritdead en 5 Octubre 2012, 07:25 AM
si supieras que estoy buscando el "metodo" para permitir plugins instalables como hace el firefox, pero mis conocimientos no llegan a ese nivel, que al instalar 1 complemento modifique el .exe original realmente es dificil :/ si lograra conseguir 1 ejemplo por mas minimo que fuera podria tener 1 idea y poder explorarla hasta mejorarle como estoy haciendo con el namespace codeDOM y reflection
segun mis pocos conocimientos sobre el tema plugin, que yo sepa los plugins no modifican el .exe. simplemente son "extensiones" por asi decirlo del programa, el cual el .exe debe estar preparado para reconocer y permitir ejecutarlos sin necesidad de volver a compilar el .exe original.
por tirar un ejemplo facil, el programa
CCleaner cuando vas a seleccionar el idioma del programa tiene como 30 lenguajes, esos lenguajes si te fijas en la carpeta de instalacion, estan guardados en una carpeta con extension .dll, si yo borro alguno de esos archivos cuando voy al programa ya no existen y no puedo usarlos. y si me llegaria a crear yo un nuevo lenguaje y pongo ahi la .dll, el programa estaria listo para usar el lenguaje creado por mi con esa .dll nueva.
otro ejemplo es la
widget library, eso si son plugins, el programa original simplemente reconoce los archivitos de los widget y los carga al sistema y permite ejecutarlos, yo me puedo crear 20 widgets y agregarlos sin la necesidad de modificar nada del .exe original.
si buscas en internet encontras en 2 segundos ejemplos de plugins en .NET, explicados, creo que aca ya se habia publicado algo en el foro, de ultima busca.
saludos.
HOLA!!!
Cita de: seba123neo en 5 Octubre 2012, 15:04 PM
segun mis pocos conocimientos sobre el tema plugin, que yo sepa los plugins no modifican el .exe. simplemente son "extensiones" por asi decirlo del programa, el cual el .exe debe estar preparado para reconocer y permitir ejecutarlos sin necesidad de volver a compilar el .exe original.
por tirar un ejemplo facil, el programa CCleaner cuando vas a seleccionar el idioma del programa tiene como 30 lenguajes, esos lenguajes si te fijas en la carpeta de instalacion, estan guardados en una carpeta con extension .dll, si yo borro alguno de esos archivos cuando voy al programa ya no existen y no puedo usarlos. y si me llegaria a crear yo un nuevo lenguaje y pongo ahi la .dll, el programa estaria listo para usar el lenguaje creado por mi con esa .dll nueva.
otro ejemplo es la widget library, eso si son plugins, el programa original simplemente reconoce los archivitos de los widget y los carga al sistema y permite ejecutarlos, yo me puedo crear 20 widgets y agregarlos sin la necesidad de modificar nada del .exe original.
si buscas en internet encontras en 2 segundos ejemplos de plugins en .NET, explicados, creo que aca ya se habia publicado algo en el foro, de ultima busca.
saludos.
+999
Ademas, el sistema de scripts es para hacer cosas on the fly , rutinas rapidas para no recompilar, pero se suelen usar para tareas simples y aisladas (ejemplo un parche que mandas por internet y el programa ejecuta) no para algo que abras todos los dias, para eso es necesario un sistema mas robusto como dice seba.
GRACIAS POR LEER!!!
encontre lo que buscaba. Aqui (http://www.divelements.co.uk/net/articles/plugins/pluginssample.zip)
;D
Cita de: kub0x en 5 Octubre 2012, 13:23 PM
Buenas spiritdead,
te queria preguntar si la clase para crear subprogramas dentro del programa original permite interactuar con clases incluidas dentro del proyecto. Es decir, ¿Podría llamar a cierta clase incluida en el proyecto utilizando la clase que mencionas?.
Gracias
por ahora son ajenas al codigo original, pero no ajuro :P la cosa es que es muy complicado
Cita de: Maurice_Lupin en 5 Octubre 2012, 15:34 PM
encontre lo que buscaba. Aqui (http://www.divelements.co.uk/net/articles/plugins/pluginssample.zip)
;D
wow, estoy revisandolo, y capas podria hacer que el algoritmo de codeDOM generara DLL, y guardarlas en 1 carpeta, hmmmm es interesante este asunto de verdad
lo revisare despues, porque la estructura del programa me complicaria la insercion de plugins, pero posiblemente cuando tenga mas tiempo, podria hacer 1 rediseño fuerte para permitirme usarles pero me gusto la verdad
usando un control llamado ICSharpCode.texteditor
miren como quedo
(http://i1206.photobucket.com/albums/bb451/spiritdead/prueba5.jpg)
mejorando cada dia =)
Para extender tu app puedes utilizar MEF
Saludos
Cita de: Novlucker en 5 Octubre 2012, 22:54 PM
Para extender tu app puedes utilizar MEF
Saludos
si pudieras explicarme un poco que vendria siendo MEF :P
http://mef.codeplex.com/
http://fernandomachadopiriz.com/2010/04/15/simple-introduccin-al-microsoft-extensibility-framework/ ;)
Cita de: Novlucker en 5 Octubre 2012, 23:10 PM
http://mef.codeplex.com/
http://fernandomachadopiriz.com/2010/04/15/simple-introduccin-al-microsoft-extensibility-framework/ ;)
suena interesante
por cierto busco programadores de alto nivel de experiencia y diseñadores para este proyecto
es 1 proyecto freelancer, pero si genera ingresos se divide segun su aporte!
nuevos avances
nueva posibilidad de usar "eventos-raiseevent-withevents" dentro de los scripts como tambien uso de timers,etc aumentando casi al 100% la posibilidad de utilizar los objetos que permite el framework!
:D 1 ejemplo!
Imports System
Imports System.Xml
Imports System.Data
Imports Microsoft.VisualBasic
Imports System.Drawing
Imports System.Windows.Forms
'imports aditionals here
Namespace FDT 'no edit
Class ModuleFDT 'no edit
'global variable here
dim t as new form
dim withevents w as new button
Sub Main() 'no edit
'code initialization here
w.text= "test"
t.text="form de prueba"
t.controls.add(w)
t.show()
End Sub 'no edit
'rest code here,subs,functions
private sub w_click(byval sender as object,byval e as system.eventargs) handles w.click
msgbox("soy un mensaje generado por 1 evento")
end sub
End Class 'no edit
End Namespace 'no edit
(http://i1206.photobucket.com/albums/bb451/spiritdead/prueba7.jpg)
Cita de: spiritdead en 6 Octubre 2012, 10:32 AM
nuevos avances
nueva posibilidad de usar "eventos-raiseevent-withevents" dentro de los scripts como tambien uso de timers,etc aumentando casi al 100% la posibilidad de utilizar los objetos que permite el framework!
:D 1 ejemplo!
Imports System
Imports System.Xml
Imports System.Data
Imports Microsoft.VisualBasic
Imports System.Drawing
Imports System.Windows.Forms
'imports aditionals here
Namespace FDT 'no edit
Class ModuleFDT 'no edit
'global variable here
dim t as new form
dim withevents w as new button
Sub Main() 'no edit
'code initialization here
w.text= "test"
t.text="form de prueba"
t.controls.add(w)
t.show()
End Sub 'no edit
'rest code here,subs,functions
private sub w_click(byval sender as object,byval e as system.eventargs) handles w.click
msgbox("soy un mensaje generado por 1 evento")
end sub
End Class 'no edit
End Namespace 'no edit
(http://i1206.photobucket.com/albums/bb451/spiritdead/prueba7.jpg)
Hola"spiritdead" quisiera que me ayudes con una pregunta sobre CodeDom y Reflection:
- He estado viendo el ejemplo de: http://www.codeproject.com/Articles/12852/Compile-and-Run-VB-NET-Code-using-the-CodeDom
y de hecho he modificado un par de cosas, pero mi pregunta es: Cómo puedo modificar una propiedad de un control dinámicamente osea por ejemplo:
- escribir dentro de un TextBox1 que se deshabilite TextBox2.Enabled=False al presionar el Button1, me entiendes?
como haría eso, ya que cuando le mando la propiedad por escrito me sale que no se puede modificar la propiedad de esa maner, sino tiene que ser de manera explícita por el usuario en el código.
entonces como haría eso??? ya que tu lo haz hecho, sólo necesito esa línea!!! pleaseee ayudaa!!!
@LordBynary
Está prohibido revivir temas antiguos, además, fíjate en la fecha de conexión del usuario SpiritDead en su perfil, dudo que vaya a responderte.
Para modificar en tiempo de ejecución la propiedad de un control teniendo solamente un string del tipo "Control.Property = Value", puedes hacerlo utilizando Reflection.
Pero no entendí muy bien si es eso lo que pretendes hacer.
Plantea tu duda de forma correcta en otro tema, y muestra tú código.
Tema cerrado.
Saludos.