[gelöst]Lokale Programme mit RTC starten

9. Juni 2009 08:33

Hallo MSDynamics community,

ich wollte nachfragen ob/wie es möglich ist über den RTC ein lokales Programm zu starten. Beispielsweise soll sich per action button Office Word (bei mir auf dem Rechner) öffnen.

Danke und Gruss Andy!
Zuletzt geändert von andyR am 9. Juni 2009 11:03, insgesamt 1-mal geändert.

Re: Lokale Programme mit RTC starten

9. Juni 2009 08:55

Executes external programs and operating system commands from C/AL programs.
Code:
[ReturnCode]:= SHELL(Name [, Param, ...])


weitere details findet man im c/side reference guide, wenn du nach shell suchst.

Re: Lokale Programme mit RTC starten

9. Juni 2009 09:29

Hi, zunächst einmal danke für deine schnelle antwort.
Dennoch sehe ich hier das Problem, dass bei dem code (ausschnitt)

Code:
OnRun=BEGIN
            // The following is not trusted and will give a warning.
            ExecName := 'C:\windows\notepad.exe';
            param := 'C:\MyFile.txt';
            ret := SHELL(ExecName, param);
            // The following is trusted and will not give a warning.
            param := 'C:\MyFile.txt';
            ret := SHELL(TEXT000, param);
            // The following is not possible - will only give an error
            // message during runtime. This is also if its a TextConst:
            ExecName := 'C:\windows\notepad.exe C:\MyFile.txt';
            ret := SHELL(ExecName);
          END;


das notepad auf dem Server ausgeführt wird (wenn innerhalb RTC gestartet). Mein Problem ist aber, dass es auf dem Client starten soll.

Danke und Gruss andy

Re: Lokale Programme mit RTC starten

9. Juni 2009 09:47

Anstelle von SHELL kannst du auch das Automation-Objekt 'Windows Script Host Object Model'.WshShell nutzen.
Seit NAV2009 kannst du beim CREATE einen Parameter mitgeben, welcher angibt, ob die Instanz auf dem Client erstellt werden soll.
Code:
IF ISCLEAR(WSHShell) THEN
  CREATE(WSHShell,TRUE,TRUE);
WSHShell.RUN('C:\windows\notepad.exe C:\MyFile.txt');

Re: Lokale Programme mit RTC starten

9. Juni 2009 10:02

ich wollte mich gerade selbst korrigieren.
SHELL kann man für den RTC gar nicht mehr benutzen. es funktioniert nur noch so wie timo gesagt hat. sry für die voreilige falsche antwort.

edit: wenn man einfach nur dateien öffnen will, könnte man auch HYPERLINK benutzen, dies kann eine ganze liste an protokollen/dateitypen.

Re: Lokale Programme mit RTC starten

9. Juni 2009 10:30

dr hat geschrieben:edit: wenn man einfach nur dateien öffnen will, könnte man auch HYPERLINK benutzen, dies kann eine ganze liste an protokollen/dateitypen.

Um genau zu sein:
Laut fin.stx (00033-01261-240-0) unterstützt HYPERLINK folgende Dateiendungen:
bmp, doc, docx, dot, dotx, htm, html, mhtml, mht, fig, gif, ini, jpg, mdb, mov, mpeg, mpg, pub, pdf, ppt, pptx, pps, rtf, sys, txt, url, wri, wpd, wps, xls, xlsx, xsn, xml, zip, fdf, aspx, chm, vsd, mpp, wmv, wma, msg, tif, png, dwg, dwf, awf, drw, csv, dxf, cdr

Re: Lokale Programme mit RTC starten

9. Juni 2009 11:03

WOW vielen Dank auch 2 für die schnelle und kompetente Hilfe! Klappt alles wunderbar.

Re: [gelöst]Lokale Programme mit RTC starten

8. September 2009 10:15

Kann ich mithilfe dieses Objektes auch Ordner erstellen?

Re: [gelöst]Lokale Programme mit RTC starten

8. September 2009 11:11

m_schneider hat geschrieben:Kann ich mithilfe dieses Objektes auch Ordner erstellen?

Klar: WSHShell.run('c:\windows\system32\cmd.exe /C mkdir Ordnerpfad');

Re: [gelöst]Lokale Programme mit RTC starten

8. September 2009 11:47

McClane hat geschrieben:
m_schneider hat geschrieben:Kann ich mithilfe dieses Objektes auch Ordner erstellen?

Klar: WSHShell.run('c:\windows\system32\cmd.exe /C mkdir Ordnerpfad');

In meiner Naivität und Unerfahrenheit mit Automations dachte ich man kann das irgendwie über "Windows Script Host Object Model".Folder lösen. Aber Dankschön!

Super Forum!!!

Re: [gelöst]Lokale Programme mit RTC starten

6. Juni 2010 13:31

McClane hat geschrieben:
m_schneider hat geschrieben:Kann ich mithilfe dieses Objektes auch Ordner erstellen?

Klar: WSHShell.run('c:\windows\system32\cmd.exe /C mkdir Ordnerpfad');


Von mir auch ein klares Dankeschön! :-)