在AX4.0中使用C#脚本的实现
1,虽然ms收购了ax,但是在ax低版本(ver<=4.0)中,还没有办法直接使用ms现在主推的.net技术。
通常的做法是现在AX中天津.net的引用,然后才能在代码中使用.net的一些对象以实现我们需要的功能。
2,添加引用

3. job中代码范本。
//test download image from web
//use this code can show web image on report print System.Net.HttpWebRequest httpRequest = null;
System.Net.HttpWebResponse httpResponse = null;
System.Net.CookieCollection cookies = null; CLRObject clro = null;
System.IO.Stream stream;
System.IO.StreamReader reader;
str msg;
BinData bidData=new BinData();
Image logoImage;
Bitmap Bitmap;
System.Drawing.Image webImage ;
System.BitConverter bit;
;
new InteropPermission(InteropKind::ClrInterop).assert();
clro = System.Net.WebRequest::Create("http://www5.sml.com/**Online/images/img1.JPG");
httpRequest = clro;
httpResponse = httpRequest.GetResponse();
stream = httpResponse.GetResponseStream();
reader = new System.IO.StreamReader(stream);
webImage = System.Drawing.Image::FromStream(stream);//webImage.FromStream( httpResponse.GetResponseStream();
webImage.Save("C:\\AXconfig\\001.jpg");
bidData.loadFile("C:\\AXconfig\\001.jpg");
Bitmap = bidData.getData();
4, 实现.NET的另外一种方法,示例代码,实现通过AX系统上载文件到非windows服务器。所有的C#对象都声明为ClrObject.
static boolean SML_UpLoadFileByStream(Str url,Str FullFileName,Container conHeader=connull(),Container conQueryString=connull())
{
ClrObject PostArray;
CLRObject BinaryReader;
CLRObject WCHeaders,WCQueryString;
ClrObject FileStream;
ClrObject FileMode;
ClrObject FileAccess;
ClrObject PostStream;
CLRObject WC;
System.Exception clrException;
boolean ret=false;
int i;
Container subcon;
System.Net.WebClient xx;
; if (winapi::fileExists(FullFileName))
{
try
{
FileStream = new CLRObject("System.IO.FileStream", FullFileName,
CLRInterop::parseClrEnum("System.IO.FileMode","Open"), CLRInterop::parseClrEnum("System.IO.FileAccess", "Read"));
BinaryReader = new CLRObject("System.IO.BinaryReader", FileStream);
PostArray= BinaryReader.ReadBytes(System.Convert::ToInt32(FileStream.get_Length()));
WC = new CLRObject("System.Net.WebClient");
if (conlen(conHeader))
{
WCHeaders=WC.get_Headers();
for(i=1;i<=conlen(conHeader);i++)
{
subcon=conpeek(conHeader,i);
WCHeaders.Add(conpeek(subcon,1),conpeek(subcon,2));
}
}
if (conlen(conQueryString))
{
WCQueryString=WC.get_QueryString();
for(i=1;i<=conlen(conQueryString);i++)
{
subcon=conpeek(conQueryString,i);
WCQueryString.Add(conpeek(subcon,1),conpeek(subcon,2));
}
}
PostStream=WC.OpenWrite(url, "POST");
PostStream.Write(PostArray, 0,PostArray.get_Length());
PostStream.close();
FileStream.close();
}
catch(Exception::CLRError)
{
if (CLRInterop::isNull(PostStream) == false)
{
PostStream.Close();
}
if (CLRInterop::isNull(FileStream) == false)
{
FileStream.Close();
}
}
ret=true;
}
return ret;
}
在AX4.0中使用C#脚本的实现的更多相关文章
- 浅析busybox-1.12.0中ash的脚本命令局限性
浅析busybox-1.12.0中ash的脚本命令局限性 LUTHER= 表示将LUTHER清空,将其变为null echo ${LUTHER:-111}如果执行该句之前LUTHER变量不存在,那么显 ...
- 第四章 在MVC4.0中对脚本以及样式表的引用变化
原文:http://www.cnblogs.com/xdotnet/archive/2012/07/21/aspnet40_webpage20.html 一.可以直接使用“~”,而无需使用Href对象 ...
- AppBox v6.0中实现子页面和父页面的复杂交互
前言 1. AppBox是捐赠开源(获取源代码至少需要捐赠作者 1 元钱),基于的 FineUI(开源版)则是完整开源,网址:http://fineui.codeplex.com/ 2. 你可以通过捐 ...
- 在 Typescript 2.0 中使用 @types 类型定义
在 Typescript 2.0 中使用 @type 类型定义 基于 Typescript 开发的时候,很麻烦的一个问题就是类型定义.导致在编译的时候,经常会看到一连串的找不到类型的提示.解决的方式经 ...
- redis中使用java脚本实现分布式锁
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/115.html?1455860390 edis被大量用在分布式的环境中,自 ...
- 在selenium2.0中使用selenium1.0的API
Selenium2.0中使用WeDriver API对页面进行操作,它最大的优点是不需要安装一个selenium server就可以运行,但是对页面进行操作不如selenium1.0的Selenium ...
- 第二十三篇:在SOUI中使用LUA脚本开发界面
像写网页一样做客户端界面可能是很多客户端开发的理想. 做好一个可以实现和用户交互的动态网页应该包含两个部分:使用html做网页的布局,使用脚本如vbscript,javascript做用户交互的逻辑. ...
- C++中嵌入Lua脚本环境搭建
第一步(环境准备工作): 工具: ●LuaForWindows_v5.1.4-46.exe傻瓜式安装. 作用:此工具可以在windows环境下编译运行Lua脚本程序.安装完成后会有两个图标:Lua和S ...
- C++中调用Python脚本
C++中调用Python脚本的意义就不讲了,至少你可以把它当成文本形式的动态链接库, 需要的时候还可以改一改,只要不改变接口, C++的程序一旦编译好了,再改就没那么方便了 先看Python的代码 代 ...
随机推荐
- angular2 的依赖注入
angular2 的依赖注入包含了太多的内容,其中的一个重点就是注入器,而注入器又非常难理解,今天我们不深入介绍注入器的内容,可以参考官方文档,我们今天来说注入器的层级. 也就是组件获取服务的容器会选 ...
- BIP_开发案例10_BI Publisher报表国际化多语言的实现(案例)
2014-12-26 Created By BaoXinjian
- apache/php 开启 gzip压缩
1.php方式开启 原理: header("Content-Encoding: gzip"); echo gzencode('songjiankang'); 示例1: functi ...
- bug_ _java.lang.IllegalArgumentException: View not attached to window manager 2
今天遇到一个很奇特的问题,当用户设置了PIN码,在锁屏界面正常解锁PIN码后,进入Launcher时显示com.android.phone 已停止运行.一开始猜想会不会是解锁PIN码的时候处理导致了P ...
- 转_IOS开源
http://www.csdn.net/article/2013-06-05/2815530-GitHub-iOS-open-source-projects-one 苹果App Store本身所具有的 ...
- JAVA 什么时候使用静态
static所修饰的内容是成员(成员属性.成员方法) 从两方面入手:1.什么时候使用静态的成员属性:当属于同一个类的所有对象出现共享数据时,需要将存储这个共享数据的成员变量用static修饰 2.什么 ...
- JAVA 99乘法表实例
实例: public class Test{ public static void main(String[] args){ for(int i=1;i<=9;i++){ for(int j=1 ...
- 移动设备wap手机网页html5通过特殊链接:打电话,发短信,发邮件详细教程
如果需要在移动浏览器中实现拨打电话,调用sms发短信,发送email等功能,移动手机WEB页面(HTML5)Javascript提供的接口是一个好办法. 采用url href链接的方式,实现在Safa ...
- 如何让div水平居中
代码实例: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...
- Jmeter Html 报告优化
转载自南风_real博客园:http://www.cnblogs.com/jaychang/p/5881525.html 但是最近在查阅相关资料时,发现基本都是重复一篇文章Jmeter使用笔记之htm ...