[ ax2012 ] calling Ax32.exe instead of AxHLink.exe

Since AxHLink.exe will limit to only the default configuration, we will call the Ax32.exe that is more open to various configuration instead.

To do that,

instead of calling

AxHLink.exe Dynamics://0?DrillDown_5637192587

we use startupCmd parameter of Ax32.exe

"C:\Program Files (x86)\Microsoft Dynamics AX\60\Client\Bin\Ax32" "C:\path\to\configuration.axc" -startUpCmd=DrillDown_5637192587

Note that we can find multiple feature of startUpCmd under `Switch` section of the following class ( as explained in MS ref )

\Classes\SysStartupCmd\Construct

Note2 : allow all arguments to pass from the client is risky, so it is better to call to .bat or .lnk instead of calling directly to ax32.exe

ref : http://stackoverflow.com/questions/23336165/open-direct-links-to-ax-objects-or-datasets-from-external-application

Advertisements

[ ax2012 ] called by Csharp

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private void button1_Click(object sender, RoutedEventArgs e)
{
// System.Diagnostics.Process process = new System.Diagnostics.Process();
// System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
// startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
// startInfo.FileName = "cmd.exe";
// startInfo.Arguments = "C:/Program Files (x86)/Microsoft Dynamics AX/60/Client/Bin/Ax32.exe";
// process.StartInfo = startInfo;
// process.Start();

string str = @"C:\Program Files (x86)\Microsoft Dynamics AX\60\Client\Bin\Ax32.exe";
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = str;
process.StartInfo.Arguments = @"-startupcmd=AutoRun_C:\csharp_prototype\XMLFile1.xml";
process.Start();

}

private void button2_Click(object sender, RoutedEventArgs e)
{
string str = @"C:\Program Files (x86)\Microsoft Dynamics AX\60\Client\Bin\Ax32.exe";
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = str;
process.StartInfo.Arguments = @"-startupcmd=AutoRun_C:\csharp_prototype\XMLFile2.xml";
process.Start();
}
}
}
<?xml version="1.0" encoding="UTF-8"?>

<AxaptaAutoRun logFile="$HOME\axEXProd.log" version="4.0" exitWhenDone="false">

<Run name="SalesTableListPage" type="displayMenuItem"/>

</AxaptaAutoRun>

more info : http://msdn.microsoft.com/en-us/library/sysautorun.aspx