C#嵌入IronPython脚本示例(hello world)

news/2024/6/16 7:36:52

        随着项目的逐渐收尾, 对IronPython脚本也越来越熟悉,这里为IronPython脚本感兴趣但不入门的朋友写几篇使用心得,这是第一个:最简单的hello world程序。

        首先,我们必须有一个IronPython脚本引擎库(IronPython.dll),我用的版本是V1.0,你可以在网上直接下到相关源码,编译后即生成IronPython.dll。

        新建一个C#桌面程序,引用该库后,我们便开始编写第一个程序。

        下面是C#中的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using IronPython.Hosting;

namespace TestIronPython
{
  
    public partial class Form1 : Form
    {

       public Form1()
        {
            InitializeComponent();       
        }
       
        private void button1_Click(object sender, EventArgs e)
        {
            PythonEngine scriptEngine = new PythonEngine();
            scriptEngine.Execute(textBox1.Text);
        }

    }

}

     代码很简单,声明了一个scriptEngine 实例,直接用Execute执行代码即可。下面看看py的代码该怎么写:

import clr
clr.AddReferenceByPartialName("System.Windows.Forms")
clr.AddReferenceByPartialName("System.Drawing")
from System.Windows.Forms import *
from System.Drawing import *
MessageBox.Show("Hello World!")

     第一句代码很重要,导入.net clr,用clr的AddReferenceByPartialName方法加载我们熟悉的System.Windows.Forms和System.Drawing库,最后可以直接执行.net中的MessageBox方法。

     运行后,直接单击button1,即可弹出一个对话框"Hello World!"

    怎么样,是不是很简单?!

 





http://www.niftyadmin.cn/n/3655787.html

相关文章

JavaScript如何判断一个变量是数组还是对象

target instanceof type 注意:不可以用typeof,因为除了原始类型和function以外,全都是object。(包括null) ; 不要用Object来测试,因为Array属于object的子类 var a {} var b []// 【注意】…

去北大聆听比尔盖茨精彩演讲,感受创新中国未来

去北大聆听比尔盖茨精彩演讲,感受创新中国未来今天有幸去北大参加创新中国未来盛会,近距离聆听比尔盖茨精彩演讲,实令人心情澎湃。9:00钟准时开场,5个屏幕同时播放故宫上空二龙戏珠的震撼场景,接着沈向洋简短的开幕致辞…

提高精简框架集程序的性能

以下编程做法可以节省内存和改善设备应用程序的性能。使用 Windows 窗体和图形节省内存 对提供 BeginUpdate 和 EndUpdate 方法的控件使用这两种方法,提供这两种方法的控件包括 ComboBox、ListBox、ListView、ToolStripComboBox 和 TreeView。 …

js == 和===的区别

: 运算符称作相等,用来检测两个操作数是否相等,这里的相等定义的非常宽松,可以允许进行类型转换 :用来检测两个操作数是否严格相等 对于string,number等基础类型,和是有区别的 不同类型间比较&#xff…

javascript 扩展运算符...

是什么 取出参数对象的所有可遍历属性,然后拷贝到当前对象之中。 数组→参数序列 调用apply很方便 function add(x, y) {return x y; }const numbers [4, 38];// 数组转成单独的参数 add(...numbers) // 42 复制数组 替代concat const a1 [1, 2]; // 写法一 c…

Windows Mobile 2005网络连接之真机和模拟器的异同

我的预装Windows Mobile 2005的PPC与PC机同步互联时,ActiveSync会自动在PC机建立本地连接,IP地址一般默认为169.254.2.2,此时PPC上也有像对应的IP地址169.254.2.1,用Ping命令即可ping通,如下图所示:可是与W…

FTP之‘基础连接已关闭:服务器提交了协议冲突’错误探析

这段时间由于工作的关系,一直研究FTP 服务器/客户端的相关程序,发现了不少问题,有些确实是微软的bug(或者说相关代码不够健壮) 。一、微软IE浏览器作为FTP客户端的bug上传含中文字符的多级目录的失败的bug,…