Wednesday 16 April 2014

Externes Programm aus Formular starten

Wir müssen aus dem Abwasser-Haltungsformular eine Applikation mit Parametern - unter anderem die aktuelle Haltungsnummer - aufrufen. Im Formular kann man einen "Button" einbinden und mit VB.Net Script hinterlegen. In der Map API gibt es eine Funktion, die für einen Aufruf vom Namen her "passen"  könnte - OpenURL.

Map API Dokumentation

Damit lässt sich tatsächlich ein Programm starten, z.B. so:

Public Overrides Sub Button_Click()
      Me.Application.OpenUrl("C:\Program Files (x86)\Notepad++\notepad++.exe")
End Sub


Beim Aufruf von Notepad++ erscheint jedoch folgende Meldung:




Meldung in Notepad++ nach Aufruf aus Map
Es scheint, dass beim Aufruf schon ein Parameter angehängt wird den Notepad++ als Verweis auf eine bestimmte Datei interpretiert. Legt man eine Datei mit dem Namen "0" im Root Verzeichnis von C: an, öffnet Notepad++ die Datei auch beim Aufruf.

Es hat nicht funktioniert, das Programm mit eigenen Parametern aufzurufen - z.B. mit einem bestimmten Dateinamen.

Eine Datei - die mit einem Programm verknüpft ist - liess sich nicht öffnen:

Public Overrides Sub Button_Click()
      Me.Application.OpenUrl(" C:\Temp\testdatei.txt")
End Sub


Um ein Programm zu starten kann man die Funktionalität des .Net Frameworks nutzen:

Public Overrides Sub Button_Click()   

 'Haltung auslesen
 dim d as Autodesk.Map.IM.Forms.DialogControls.TextBox
 dim name_number as String
 d = Me.Dialog.Controls.Item("NAME_NUMBER")
 name_number = d.Value
 dim parameter as String =  " /p Q:\KINS\Daten\öffKanal/h " + name_number

 'Msgbox( "Aufruf von:C:\Program Files (x86)\KINS\KINS.EXE " + parameter)
 'Aufruf
   
 Dim startInfo As New System.Diagnostics.ProcessStartInfo
 startInfo.FileName = "C:\Program Files (x86)\KINS\KINS.EXE"
 startInfo.Arguments = parameter
 Dim pro As New System.Diagnostics.Process
 pro.Start(startInfo)

End Sub


Map 2013, SP2

1 comment:

  1. War vielleicht die Dateizuordnung "Notepad++ / txt" verbogen? Das Thema hat mir letztens Nerven gekostet mit der hta-Erweiterung ..

    ReplyDelete