Executing external programs
Sometimes it’s needed to add functionality not delivered by NAV. One way is to use .Net assemblies or automations (old school). Another scenario can be to run an external program in C/AL. One way is to use the quite old SHELL Command or class WshShell of the "Windows Scripting Host" (automation). In both cases, when running an external program, a security warning is displayed ... not so good for automatic execution (batch).
Class System.Diagnostics.Process from .Net assembly System.dll
To avoid that and to have also a much prettier solution, use the class System.Diagnostics.Process from the .Net Framework (search for assembly System.dll). For usage in RTC Client set the property RunOnClient to true, for usage on the server only like job queues set the value to false.
Sample: creating a file using the dir command in a dos shell
// variable process | dotnet | System.Diagnostics.Process (assembly System.dll)
process := process.Process;
process.StartInfo.UseShellExecute := FALSE;
process.StartInfo.FileName := ‘cmd.exe’;
process.StartInfo.Arguments := ‘/c dir > c:\temp\dir.txt’;
process.StartInfo.CreateNoWindow := TRUE;
process.Start();
CLEAR(process);
sample: extract a rar file
process := process.Process;
process.StartInfo.UseShellExecute := FALSE;
process.StartInfo.FileName := ‘”C:\Program Files (x86)\WinRAR\unrar.exe”‘;
process.StartInfo.Arguments := ‘e -y -o+ c:\temp\archive.rar c:\temp’;
process.StartInfo.CreateNoWindow := TRUE;
process.Start();
CLEAR(process);
Links:
http://msdn.microsoft.com/en-us/library/system.diagnostics.process%28v=vs.110%29.aspx
http://msdn.microsoft.com/en-us/library/dd355282.aspx
cheers
Filed under: c/al, nav 2013, nav functions Tagged: c/al, nav 2013 ![]()

Like
Report
*This post is locked for comments