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#脚本的实现的更多相关文章

  1. 浅析busybox-1.12.0中ash的脚本命令局限性

    浅析busybox-1.12.0中ash的脚本命令局限性 LUTHER= 表示将LUTHER清空,将其变为null echo ${LUTHER:-111}如果执行该句之前LUTHER变量不存在,那么显 ...

  2. 第四章 在MVC4.0中对脚本以及样式表的引用变化

    原文:http://www.cnblogs.com/xdotnet/archive/2012/07/21/aspnet40_webpage20.html 一.可以直接使用“~”,而无需使用Href对象 ...

  3. AppBox v6.0中实现子页面和父页面的复杂交互

    前言 1. AppBox是捐赠开源(获取源代码至少需要捐赠作者 1 元钱),基于的 FineUI(开源版)则是完整开源,网址:http://fineui.codeplex.com/ 2. 你可以通过捐 ...

  4. 在 Typescript 2.0 中使用 @types 类型定义

    在 Typescript 2.0 中使用 @type 类型定义 基于 Typescript 开发的时候,很麻烦的一个问题就是类型定义.导致在编译的时候,经常会看到一连串的找不到类型的提示.解决的方式经 ...

  5. redis中使用java脚本实现分布式锁

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/115.html?1455860390 edis被大量用在分布式的环境中,自 ...

  6. 在selenium2.0中使用selenium1.0的API

    Selenium2.0中使用WeDriver API对页面进行操作,它最大的优点是不需要安装一个selenium server就可以运行,但是对页面进行操作不如selenium1.0的Selenium ...

  7. 第二十三篇:在SOUI中使用LUA脚本开发界面

    像写网页一样做客户端界面可能是很多客户端开发的理想. 做好一个可以实现和用户交互的动态网页应该包含两个部分:使用html做网页的布局,使用脚本如vbscript,javascript做用户交互的逻辑. ...

  8. C++中嵌入Lua脚本环境搭建

    第一步(环境准备工作): 工具: ●LuaForWindows_v5.1.4-46.exe傻瓜式安装. 作用:此工具可以在windows环境下编译运行Lua脚本程序.安装完成后会有两个图标:Lua和S ...

  9. C++中调用Python脚本

    C++中调用Python脚本的意义就不讲了,至少你可以把它当成文本形式的动态链接库, 需要的时候还可以改一改,只要不改变接口, C++的程序一旦编译好了,再改就没那么方便了 先看Python的代码 代 ...

随机推荐

  1. ADF_ADF Faces系列1_使用JSF开发基于Ajax的用户界面:ADF Faces 富客户端组件简介(Part1)

    2013-05-01 Created By BaoXinjian

  2. 2016 Multi-University Training Contest 5 Divide the Sequence

    Divide the Sequence 题意: 给你一个序列A,问你最多能够分成多少个连续子序列,使得每个子序列的所有前缀和均不小于0 题解: 这题是比赛时候的水题,但我比的时候也就做出这一题, = ...

  3. CF 518 D. Ilya and Escalator

    Ilya got tired of sports programming, left university and got a job in the subway. He was given the ...

  4. NeHe OpenGL教程 第二十五课:变形

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  5. suibi1117

    测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等. 我所了解的模块接口测试大体分为两类:模块接口测试和web接口测试 模块接口测试是单元测试的基础.它主要测试模块的调用 ...

  6. sublime3的licence(update 2016-04-14)

    —– BEGIN LICENSE —–Michael BarnesSingle User LicenseEA7E-8213858A353C41 872A0D5C DF9B2950 AFF6F667C4 ...

  7. 常见数组&字符串API及其应用场景总结

    数组API: String(arr):将arr中每个元素转化为字符串,逗号连接     场景:用于鉴别数据有没有修改等. ps:String是万能的   toString 只能转换除null和unde ...

  8. DSS 搭建手机流媒体服务器

    最近研究了一下手机流媒体服务器的搭建,目的是实现通过3G手机看在线视频. 开始的时候研究了一下 Tudou手机版 ,可它哪并没有实现在线播放,因为视频地址是 http 协议的.参看了许多文章,终于了解 ...

  9. [ActionScript&Flex] FlashBuilder编译条件之如何屏蔽调试代码

    下面讲一下在FlashBuilder中如何添加编译器参数使我们在发布的时候不编译调试代码: 首先设置编译参数 编译参数设置好后,代码我们可以这样写: public class ConditionalC ...

  10. [Flex] PopUpButton系列 —— 判断下拉列表是否选中

    <?xml version="1.0" encoding="utf-8"?> <!--Flex中如何利用dataDescriptor属性和is ...