如果在“COM_IDL_connectLib.COM_IDL_connect oComIDL = new COM_IDL_connectLib.COM_IDL_connect();”步骤提示“...80040154没有注册类...”,则需要在管理员权限下利用regsvr32命令注册“...\Exelis\IDL85\resource\bridges\export\COM\COM_idl_connect.dll”组件,如下图:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace FloodMonitor
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Button1_Click(object sender, MouseEventArgs e)
{
//新建COM_IDL_CONNECT对象
COM_IDL_connectLib.COM_IDL_connect oComIDL = new COM_IDL_connectLib.COM_IDL_connect();
//对象初始化————必不可少
oComIDL.CreateObject(0, 0, 0); string infile = @"G:\Temp\应用示范子系统\Flood\S1A_IW_GRDH_1SDV_20180907T100312_20180907T100337_023591_0291E9_9B89_Cal_EC_Sub4.dat";
string outfile = @"G:\Temp\应用示范子系统\Flood\S1A_IW_GRDH_1SDV_20180907T100312_20180907T100337_023591_0291E9_9B89_Cal_EC_Sub4_Water.dat";
string tempfile = @"G:\Temp\应用示范子系统\Flood\S1A_IW_GRDH_1SDV_20180907T100312_20180907T100337_023591_0291E9_9B89_Cal_EC_Sub4_PCA2.dat";
oComIDL.ExecuteString(".compile E:\\IDLWORK_8.5\\Application_Demonstration\\source\\FloodMonitor.pro");
//执行主成分分析
oComIDL.ExecuteString("ret = FloodMonitor('" + infile + "','" + tempfile + "', error=error)");
object objRet1 = oComIDL.GetIDLVariable("ret");
string ret1 = objRet1.ToString();
if (String.Equals(ret1, ""))
{
MessageBox.Show("主成分分析完成!");
}
else
{
object objError = oComIDL.GetIDLVariable("error");
string error = objError.ToString();
MessageBox.Show("主成分分析失败!" + error);
} //设置阈值
string threshold = "4.95"; //阈值分割
oComIDL.ExecuteString("ret = FloodMonitor_GetFlood('" + tempfile + "'," + threshold + ",'" + outfile + "')");
object objRet2 = oComIDL.GetIDLVariable("ret");
string ret2 = objRet2.ToString();
if (String.Equals(ret2, ""))
{
MessageBox.Show("洪水覆盖范围提取完成!");
}
else
{
object objError = oComIDL.GetIDLVariable("error");
string error = objError.ToString();
MessageBox.Show("洪水覆盖范围提取失败!" + error);
} oComIDL.DestroyObject(); } }
}

C#通过COM组件调用IDL的pro程序的更多相关文章

  1. C++调用IDL程序的做法(一)

    作者:朱金灿 来源:http://blog.csdn.net/clever101 IDL是一种数据分析和图像化应用程序及编程语言,先由美国ITT公司所有.最初在七十年代后期用于帮助科学家分析火星探险卫 ...

  2. Java调用IDL方法总结

    Java调用IDL方法总结 Java调用IDL程序,需要先在java中加载IDL的java包(javaidlb.jar),该包不需要下载,在IDL的安装目录中可以直接找到(C:\Program Fil ...

  3. C++调用IDL程序的做法(三)

     作者:朱金灿 来源:http://blog.csdn.net/clever101 在C++调用IDL程序的做法(二)一文中介绍了如何动态创建IDLDrawWidgetControl的做法.假如我 ...

  4. 关于COM组件调用

    转载自:http://www.cppblog.com/ice197983/articles/4178.html 一.调用步骤: 使用ATL编写的COM组件调用方法有两种:1.导入myCom.dll文件 ...

  5. C++调用IDL程序的做法(二)

    作者:朱金灿 来源:http://blog.csdn.net/clever101 上次提到使用IDLDrawWidget Control 3.0来调用IDL程序,但是我们还有一些问题没有解决,比如C+ ...

  6. 此操作失败的原因是对 IID 为“{000208DA-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface

    有些电脑报错,有些电脑正常. 环境:VS2010 WinForm程序, Office2007 C#操作Excel时报错.错误: 无法将类型为“System.__ComObject”的 COM 对象强制 ...

  7. 无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”。此操作失败的原因是对 IID 为“{000208D5 -0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。 (异常来 自 HRESULT:

    无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”.此操作失败的原因是对 IID 为“{000208D5 -000 ...

  8. 最原始的COM组件调用过程(不使用注册表信息)

    最原始的COM组件调用过程(不使用注册表信息) 最近因为项目的关系开始研究COM组件了,以前都认为COM过时了,所以也没怎么接触. 现在好好补补课了. 一般调用COM都是通过注册表找到它的位置, 然后 ...

  9. 为operamasks增加HTML扩展方式的组件调用

    #为operamasks增加HTML扩展方式的组件调用 ##背景 之前的[博文](http://www.cnblogs.com/p2227/p/3540858.html)中有提及到,发现easyui中 ...

随机推荐

  1. java中next()和nextLine()的区别

    首先,next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键.Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后 ...

  2. js···元素的属性

    Div.attributes 是所有标签属性构成的数据集合 Div.classList 是所有class名构成的数组集合 在classList的原型链上看以看到add()和remove(). clie ...

  3. 2018.5.4 Unix的五种IO模型

    阻塞非阻塞和异步同步 同步和异步关注的是消息通信机制,关注两个对象之间的调用关系. 阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态,关注单一程序. Unix的五种IO模型 以下基于Li ...

  4. 2018-2019-2 20165313 Exp2 后门原理与实践

    实践基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? 应用程序设定后门,用户安装后,后门就可以进入.例如课堂上讲到的百度. (2)例举你知道的后门如何启动起来(win及linux) ...

  5. 入学java的第一天

    登录http://www.oracle.com,下载JDK(J2SE) JDK 1.0,1.1,1.2,1.3,1.4 1.5(JDK5.0) 支持注解.支持泛型 1.6(JDK6.0)Server2 ...

  6. 第五章JavaScript

    创建数组://1.字面量方式创建 (推荐大家使用这种方式创建数组 简单粗暴) var colors = ['red','color','yellow'];console.log(colors) //空 ...

  7. python函数之可迭代对象、迭代器的判断

    怎么判断一个对象是可迭代对象还是迭代器 例子 from collections import Iterable, Iterator lst = ['Today is Wednesday', 'Tomo ...

  8. python 基础之python的六大标准数据类型

    一:Number 数字类型(int  float  bool  complex) 1.整型: (正整数 0 负整数)#(1)二进制用0b表示intvar = 0b1010print(intvar)pr ...

  9. layer.open弹出窗口后在子页面修改弹窗的title

    在子页面修改layer.open弹窗的title,代码如下: var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索 ...

  10. sqlserver数据库不能重命名报错5030——我的一点小思考

    在学习asp.net的时候使用mssql‘经常会出现这种错误,数据库不能重名名5030的错误,其实很简单原因就是有应用程序正在占用这个连接,使用这样一行命令就可以查询出正在占用的连接 use mast ...