none
Probleme mit dll beim ausführen einer exe RRS feed

  • Frage

  • Hallo Liebe Foren - Mitglieder,

    ich bin noch relativ unerfahren im Umgang mit VB.

    Ich habe mir ein kleines Programm mit VB 2010 Express erstellt, das auch beinahe fehlerfrei läuft. Dieses Programm dient zur Kommunikation mit der Software einer 3D Koordinatenmessmaschine.

    Zu beginn des Programms soll die Software der Maschine über ausführen der exe automatisch gestartet werden. Diese exe rufe ich über die Shell Methode auf --> Shell("Pfad der exe"). Jedoch erscheint nach dem ausführen der exe folgende Fehlermeldung:

    "This application has failed to start because mnbasic.dll was not found. Re installing the application may fix this the problem".

    Wenn ich diese exe jedoch manuell ausführe funktioniert alles einwandfrei. Nun bin ich mir nicht sicher wo das Problem liegt. Muss ich vielleicht die dll irgendwie in mein VB Programm beim Ausführen der exe mit einbinden. Ich habe auch schon zu Testzwecken probiert andere Programme aufzurufen wie z.B. Calculator, Paint, Adobe Reader usw. geht alles einwndfrei. Ich verwende als Betriebssystem Windows XP SP 3. 

    Kann mir hier irgendjemand weiter helfen? Bin für jeden Tip sehr dankbar! 

    Liebe Grüße Michael

    Mittwoch, 16. März 2011 17:23

Antworten

  • Hi,

    Zu beginn des Programms soll die Software der Maschine über ausführen der exe automatisch gestartet werden. Diese exe rufe ich über die Shell Methode auf --> Shell("Pfad der exe"). Jedoch erscheint nach dem ausführen der exe folgende Fehlermeldung:

    "This application has failed to start because mnbasic.dll was not found. Re installing the application may fix this the problem".

    ich würde anstatt Shell eher Process.Start( ProcessStartInfo ) nehmen. Dort gibst Du dann das Arbeitsverzeichnis (WorkingDirectory) an, welches auch in der Verknüpfung für die andere Anwendung steht (bzw. setzt Du es, falls da nichts steht, auf das Verzeichnis, in dem die andere Anwendung liegt).

    UseShellExecute sollte, wenn ich das richtig gelesen habe, auf False gesetzt werden, damit das Arbeitsverzeichnis im anderen Prozess auch zieht.

    Dann sollte es evtl. auch schon funktionieren.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    • Als Antwort markiert Michael Demex Donnerstag, 17. März 2011 15:24
    Mittwoch, 16. März 2011 23:28
    Moderator

Alle Antworten

  • Hi,

    Zu beginn des Programms soll die Software der Maschine über ausführen der exe automatisch gestartet werden. Diese exe rufe ich über die Shell Methode auf --> Shell("Pfad der exe"). Jedoch erscheint nach dem ausführen der exe folgende Fehlermeldung:

    "This application has failed to start because mnbasic.dll was not found. Re installing the application may fix this the problem".

    ich würde anstatt Shell eher Process.Start( ProcessStartInfo ) nehmen. Dort gibst Du dann das Arbeitsverzeichnis (WorkingDirectory) an, welches auch in der Verknüpfung für die andere Anwendung steht (bzw. setzt Du es, falls da nichts steht, auf das Verzeichnis, in dem die andere Anwendung liegt).

    UseShellExecute sollte, wenn ich das richtig gelesen habe, auf False gesetzt werden, damit das Arbeitsverzeichnis im anderen Prozess auch zieht.

    Dann sollte es evtl. auch schon funktionieren.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    • Als Antwort markiert Michael Demex Donnerstag, 17. März 2011 15:24
    Mittwoch, 16. März 2011 23:28
    Moderator
  • Hallo Stefan,

    danke für deine schnelle Hilfe, die mir sehr geholfen hat. Mit Process.Start funktioniert alles einwandfrei. Du hast mich vor weiteren schlaflosen Nächten bewahrt.

    Hab unten mal noch meinen jetzt funktionierenden Code eingefügt.

    Gruß Michael

     

     

     

     

     

     

    Dim IPath As String = "C:\COSMOS\EXE\"
    IPath = IO.Path.Combine(IPath, "PMGRWIN.exe")
    Dim IStartInfo As New ProcessStartInfo(IPath)
    IStartInfo.WorkingDirectory = IO.Path.GetDirectoryName(IStartInfo.FileName)
    IStartInfo.WindowStyle = ProcessWindowStyle.Normal
    IStartInfo.UseShellExecute = False
    Process.Start(IStartInfo)
     
    Donnerstag, 17. März 2011 15:30