[gelöst]Start ext. Programm via DotNet

22. April 2015 11:42

Hallo zusammen,

ich versuche einen Dokumentenviewer für ein Archivsystem wie folgt aufzurufen:


ExecName := 'C:\Program Files (x86)\ISR\WinRtv\isrbrw32.exe';
param := '/ARCHIVE=KLAUSER /CONNECT /SHOWDOCID=' + pDocId;

Start.Start(ExecName,param);

wobei Start wie folgt definiert ist:
Start Type DotNet, Subtype System.Diagnostics.Process.'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'

Es gibt keine Fehlermeldung, aber das Programm rührt sich nicht, startet nicht.

Muss man hier andere Parameter verwenden oder was könnte falsch sein ?

Grüße
ATLAN / Hermann Schubert.
Zuletzt geändert von Atlan am 23. April 2015 17:11, insgesamt 1-mal geändert.

Re: Start ext. Programm via DotNet

22. April 2015 12:05

Da würde ich probieren, die StartInfo-Property vor dem Programmstart zu nutzen.
Process.StartInfo Property
http://www.devx.com/dotnet/Article/7914

Re: Start ext. Programm via DotNet

22. April 2015 12:46

Hallo Kowa,

ich habe das mal so geändert:

Start.StartInfo.UseShellExecute := False;
Start.StartInfo.FileName := ExecName;
Start.StartInfo.CreateNoWindow := False;
Start.Start();

Mein Problem (nicht DotNet-ler): wie übergebe ich den Startparameter ?

Grüße
Hermann.

Re: Start ext. Programm via DotNet

22. April 2015 13:05

wie übergebe ich den Startparameter ?

Das sollte über die ProcessStartInfo.Arguments Property klappen.

Re: Start ext. Programm via DotNet

22. April 2015 13:29

Hallo Kai,

ich mache Fortschritte: jetzt kommt die Meldung, dass die DotNet-Variable nicht instanziiert ist:

ExecName := 'C:\Program Files (x86)\ISR\WinRtv\isrbrw32.exe';
param := '/ARCHIVE=KLAUSER /CONNECT /SHOWDOCID=' + pDocId;

Start.StartInfo.UseShellExecute := FALSE;
Start.StartInfo.FileName := ExecName;
Start.StartInfo.CreateNoWindow := FALSE;

Start.Start(StartInfo);
Start.StartInfo.Arguments := param;

Start.Start(StartInfo);

Dank im voraus !

Gruß
Hermann.

Re: Start ext. Programm via DotNet

22. April 2015 14:44

jetzt kommt die Meldung, dass die DotNet-Variable nicht instanziiert ist:

Da dürfte dann noch der Konstruktor für die Klasse fehlen:
NAV 2016
How to: Call .NET Framework Members from C/AL Code
Calling .NET Framework Members from C/AL
NAV 2009
How to: Call .NET Framework Members from C/AL Code

http://marshaldynamicsnav.blogspot.de/2013/12/a-dotnet-variable-has-not-been.html

Re: Start ext. Programm via DotNet

23. April 2015 17:10

Hallo zusammen,

nach vielem Suchen und der Hilfe von Kollegen fand ich folgenden Link:

https://community.dynamics.com/nav/b/mo ... l-programs

und der ist wirklich erste Sahne, enthält alles was man als NAV-Programmierer ohne DotNet - Kenntnisse braucht.

Grüße
Atlan / Hermann Schubert.

Re: [gelöst]Start ext. Programm via DotNet

23. April 2015 17:46

Da waren wir ja gestern schon dicht dran :wink: .
Die Zeile
Code:
process := process.Process;

ist der Konstruktor in schlichter homogener Schönheit. Links die Instanz, rechts die Klasse.
Process Constructor