Dateien aus den Ressourcen starten (.exe) !!!

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Vatter.

    Dateien aus den Ressourcen starten (.exe) !!!

    Ich habe gerade eine Exe-Datei als Ressource in ein VB-Projekt eingebunden und will,
    das sie mit einem Klick auf einen Button startet.

    Ich will einfach nur das Programm mit einem Klick auf den Button1 starten, so ungefähr:

    Quellcode

    1. Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
    2. (Hier kommt der Code zum Öffnen der .exe-Datei hin)
    3. End Sub
    4. End Class


    Wisst ihr wie man Ressourcen startet, ich bin so weit gekommen:

    My.Resources.Dateiname


    Wie geht's weiter ??

    ?( ?( ?( ?( ?( ?(
    Schreib dir die .exe aus den Ressources ins temporäre-Verzeichnis oder woanders hin und starte sie von da aus.
    Z.B. so

    VB.NET-Quellcode

    1. My.Computer.FileSystem.WriteAllBytes(My.Computer.FileSystem.SpecialDirectories.Temp & "\Test.exe", My.Resources.Test, False)
    2. Process.Start(My.Computer.FileSystem.SpecialDirectories.Temp & "\Test.exe")

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Gonger96“ ()

    Wenn es eine Net Anwendung is dürfte es auch so gehen :




    Quellcode

    1. Imports System.Runtime.CompilerServices
    2. Imports System.Threading
    3. Imports System.Reflection
    4. Public Class Form1
    5. Private Sub run_managed_assembly(ByVal bytes As Byte())
    6. Try
    7. Dim assembly As Assembly = assembly.Load(bytes)
    8. Dim methoden_info As MethodInfo = [assembly].EntryPoint
    9. Dim obj As Object = RuntimeHelpers.GetObjectValue([assembly].CreateInstance(methoden_info.Name))
    10. methoden_info.Invoke(RuntimeHelpers.GetObjectValue(obj), New Object() {New String() {}})
    11. Catch ex As Exception
    12. End Try
    13. End Sub
    14. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    15. Dim b() As Byte = My.Resources.Datei
    16. Dim thr As New Thread(AddressOf run_managed_assembly)
    17. thr.start(b)
    18. End Sub
    19. End Class

    Samus Aran schrieb:

    Wie oft noch:
    Nutzt die Funktionen im System.IO-Namespace.
    My.Computer.FileSystem ist
    Clusterfuck
    oder so ähnlich. ;)
    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!
    Nimm nicht die Lösung von @schockerjo. Da ist son hypergenialer Try-Catch-Block drin, der dich mangels Fehlermeldung schwer zum Grübeln bringen wird.
    Also besser: Entpacken in temp-Verzeichnis (Dabei Path.Combine und System.IO verwenden) und dann mit Process.Start starten.

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup: