在AX中使用环境变量

时间:2013-02-14 13:58:00

标签: axapta dynamics-ax-2009

是否有可能在AX中使用windows-environment-variables?

示例

NormalImage上的MenuItem个媒体资源。我想用......比如%USERNAME%而不是显式用户名。例如,在类中,我可以使用WINAPI宏并引用用户文件夹变量(例如CSIDL_MYPICTURES)来访问每个用户的路径。在AOT-object-properties中,不可能引用宏...

有任何方法可以实现这一目标吗?

3 个答案:

答案 0 :(得分:0)

不,你不能在AOT上这样做。您可以通过X ++代码更改运行时的某些属性,但据我所知,您无法动态更改MenuItem上的图像。

您可以使一些菜单项可见/不可见。可能可以模拟您尝试这样做的方式,虽然这与AX设计模式不完全一致。

答案 1 :(得分:0)

是的,您可以使用.Net框架获取环境变量,或者您可以使用内置的AX功能。看到我输入的这个例子:

static void Job85(Args _args)
{
    System.String   systemString;
    str             marshalString;
    ;

    // Built in AX function
    info(strfmt("%1, %2, %3", xUserInfo::find().networkAlias, xUserInfo::find().networkDomain, xUserInfo::find().name));

    // .Net Framework
    systemString = System.Environment::GetEnvironmentVariable('username');
    marshalString = systemString; // Marshal it
    info(strfmt("%1", marshalString));
}

请参阅http://msdn.microsoft.com/en-us/library/system.environment.getenvironmentvariable.aspx

答案 2 :(得分:0)

获取客户名称和计算机名称的示例

static void testGetClientMachineName(Args _args)
{
    str localClientname, terminalServerName;
    ;
    localClientname = System.Environment::GetEnvironmentVariable('CLIENTNAME') ;
    info(localClientname);

    terminalServerName = System.Environment::get_MachineName();
    info(terminalServerName);

}