VB Code im Programm hinzufügen

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von tolio.

    VB Code im Programm hinzufügen

    Hallo Miteinander

    ich hab ein Code (Code1) und den möchte ich während der Ausführung der Anwendung Erweitern.
    !!Der Angehängte Code ist in einem Dialogfeld. Dies ist nicht das Hauptformular!!

    Der Code des Dialogfeldes soll in einer RichTextBox angezeigt werden und dann soll man einfach reinschreiben können. Danach soll der Code im Dilaogfeld Gespeichert werden.


    Code1:

    Quellcode

    1. ​ 'Aktuelle Version
    2. ElseIf sCommand = "main.curVersion" Then
    3. ListBox1.Items.Add("Version: 1.0.0.0; Build: 1.2.3.5")
    4. ListBox1.Items.Add("_")



    Danke und LG PPR

    PPR-Dev schrieb:

    während der Ausführung der Anwendung
    Was genau ist Dein Problem?
    Willst Du ein laufendes Programm umschreiben? Das geht nicht.
    Ansonsten gugst Du CodeDom.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @PPR-Dev

    RodFromGermany schrieb:

    Ansonsten gugst Du CodeDom.

    gugst du?
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    So ganz sicher wäre ich mir da nicht.
    Vor 1 oder 2 Jahren wollte ich mal was ähnliches machen.
    Und da fand ich Infos, das man praktisch zur Laufzeit kompilieren konnte. (war irgendwo in Richtung Reflection und sowas .. keine Ahnung). VBScript hängt mit da irgendwo noch im Kopf fest.

    (mir war das jedoch zu Aufwändig, und ich habe nur die Hälfte von dem Verstanden was ich da las :)

    Also.. nicht gleich aufgeben :)
    (so wie ich .. he he)

    RoulettePilot schrieb:

    So ganz sicher wäre ich mir da nicht.
    .NET-Programme sind compiliert, da kannst Du nix ändern. Das ist so. Ganz sicher.
    Du kannst natürlich wie auch immer ein Makri schreiben und dies ausführen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich gehe jede Wette ein, dass dein Problem sicherlich anders gelöst werden kann, wenn du uns näher beschreibst was deine Anwendung genau machen soll.
    Das was ich da in dem Codefetzen sehe, ist vmtl. eine Versionsverwaltung für Anwendungen - eine Art Updater. Das kannst du mit einer sinnvollen Datenstruktur besser aufbauen, sodass du nicht auf statischen Code angewiesen bist.

    RodFromGermany schrieb:

    .NET-Programme sind compiliert, da kannst Du nix ändern. Das ist so. Ganz sicher.
    Du kannst natürlich wie auch immer ein Makri schreiben und dies ausführen.

    Ich meinte auch nicht das vorhandene Programm ändern, sondern praktisch Während des Programm läuft neue Teile z.B. über einen Editor ausführen lassen.

    Programm startet..
    TextBox : dim F as new form
    f.showDialog

    (dann das ganze kompilieren lassen und ausführen)

    In dieser Art meinte ich das (und hatte auch den Thread hier so verstanden)
    Hallo Miteinander

    @AliveDevil

    1:Es besteht ein Hauptformular( main1)
    2: aus dem Hauptformular kann ma eine Anwendung starten mit dem Code (codecommand)
    3:Im Codebook soll der code geändert werden können(codebook1)

    @RodFromGermany
    Makri???


    Und sonst noch:
    Wie kann man eine Neue Anwendung schreiben, (kommandozeile) mit einer Simplen RichTextBox??

    Gruss und Danke

    PPR
    Bilder
    • codebook1.PNG

      7,86 kB, 992×570, 124 mal angesehen
    • codecommand.PNG

      18,35 kB, 734×465, 114 mal angesehen
    • main1.PNG

      4,54 kB, 216×181, 265 mal angesehen

    PPR-Dev schrieb:

    Makri?
    Sorry, vertippt:
    Makro.
    @RoulettePilot Im 1. Post steht klar:
    während der Ausführung

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi
    dynamischen Code erzeugen geht, das habe ich im Projekt InterfaceDelegation mal gemacht. Man verwendet dazu die Klassen aus System.Reflection.Emit (z.B. auf einer AppDomain eine dynamische Assembly definieren und anschließend auf dem erhaltenen AssemblyBuilder ein Modul definieren, darin dann die Klassen, usw. oder aber über die Klasse DynamicMethod, hieß glaub ich so?). Hier gibt's noch den gescheiterten Versuch, über dynamische Codegenerierung das Anwenden einer Farbmatrix zu beschleunigen: Weg um Colormatrixvorgang zu beschleunigen?
    Wie man sieht, ist das relativ unübersichtlich, weil es nur auf den "atomaren" Operationen basiert, aber wenn man die atomaren Operationen sinnvoll kapselt und testet (oder man verwendet die in CodeDom bereitgestellten Klassen dafür), kann man damit schon arbeiten. Geschenkt ist's einem trotzdem nicht.
    Alternativ kann man immer noch Code zur Laufzeit kompilieren, indem man direkt auf den VB-Compiler zugreift; das ist auch das, was RodFromGermany angesprochen hat. Dazu einfach mal die Verwendung des VBCodeProviders anschauen.
    Mit einer relativ hohen Wahrscheinlichkeit ist das dennoch nicht das, was du machen willst, daher würde ich erneut darum bitten, dass du genauer beschreibst, worin das Problem besteht, bzw. was genau, betreffend das angesprochene Problem, der Kontext dieses Problems und das Problem selbst ist und warum du der Meinung bist, dynamische Codegenerierung wäre hier angebracht - falls das überhaupt der Fall ist.

    Gruß
    ~blaze~
    Theoretisch, aber wenn die Sicherheitskonventionen beachtet werden, sollte es nicht gefährlicher sein, als ein Programm ohne dynamischen Code. Ich hab' leider nicht im Kopf, welche Rechte der Benutzer haben muss, damit dynamischer Code erzeugt wird, aber ich denke, es sollten relativ wenige sein. :P

    Gruß
    ~blaze~
    jedes gescheite anti-virenprogramm drückt dir schonmal ne heuristik erkennung rein wenn dein programm in irgendeiner form nen on the fly compiler nutzt, ähnliches gilt für die verwendung von reflection + emit. Zudem muss das fertig generierte programm ja irgendwo hin damit es ausgeführt werden kann. spätestens zu diesem zeitpunkt verhält sich generierter schadcode genauso wie normaler und wird entsprechend erkannt.

    erst in kombination mit poly- oder sogar metamorphie wirds interessant aber das ist deutlich schwerer umzusetzen als nur grad code in den compiler rein zu schieben.

    und noch eine anmerkung, afaik nutzt der codedom compiler NICHT den lokalen vb compiler des visual studios und kann somit immer eingesetzt werden, auch wenn vs nicht installiert ist.


    tatsächlich wie schon angesprochen wäre es aber interessant zu wissen was der TE genau vor hat. sonst kann man hier immer nur raten und vermuten