有没有可能在AX中使用Windows环境变量?在AX中使用环境变量
例:
在MenuItem
属性NormalImage
。我想用某物。如%USERNAME%而不是显式用户名。例如,在类中,我可以使用WINAPI
宏,并引用用户文件夹变量(例如CSIDL_MYPICTURES
)来访问每个用户的路径。在AOT对象属性中,不可能引用宏...
任何方式来实现这个?
有没有可能在AX中使用Windows环境变量?在AX中使用环境变量
例:
在MenuItem
属性NormalImage
。我想用某物。如%USERNAME%而不是显式用户名。例如,在类中,我可以使用WINAPI
宏,并引用用户文件夹变量(例如CSIDL_MYPICTURES
)来访问每个用户的路径。在AOT对象属性中,不可能引用宏...
任何方式来实现这个?
不,你不能在AOT上这样做。您可以通过X ++代码更改运行时的某些属性,但是据我所知,您无法动态更改MenuItem上的图像。
您可以使可见/不可见的某些菜单项。可能会模拟你正在尝试以这种方式做什么,尽管这与AX的设计模式并不完全一致。
是的,您可以使用.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
获得客户名称和机器名
static void testGetClientMachineName(Args _args)
{
str localClientname, terminalServerName;
;
localClientname = System.Environment::GetEnvironmentVariable('CLIENTNAME') ;
info(localClientname);
terminalServerName = System.Environment::get_MachineName();
info(terminalServerName);
}
你** **可以在菜单项变化的图像(的方式的一个例子我做的基本上工作),但用户名是不包括在文件夹中,所以它只适用于当前登录用户...) – Nico 2013-02-15 16:56:24
对不起我的拼写,我想说,你不能* dinamically *改变图像。当然你可以在AOT上改变它。我没有亲自尝试过这种特殊情况,但可能是您可以将图像部署到每个客户端上的固定路径上,类似于这个SO问题:http://stackoverflow.com/questions/3869018/images-in- AX-形式。它适用于客户使用的另一个图像,所以可能会做到这一点。 – 2013-02-18 14:18:06
这就是我所做的。但是使用用户文件夹,属性路径被设置为C:\ users \ user1 \ ..例如,它不适用于user2,user3等。因此,我想用%username%替换user1,就像windows一样..! – Nico 2013-02-18 21:46:29