如有研究需要数据,请与QQ1807232;或微信扫码添加客服咨询

【IDL】C#调用IDL编写界面(含事件)的问题

【IDL】C#调用IDL编写界面(含事件)的问题

最近有一位用户遇到一个问题。用C#调用IDL写的程序(有界面,有响应事件),但是在运行C#程序的时候,在IDL程序界面弹出的同时会继续执行C#下边的代码。

 

问题描述如下:

COM_IDL_connectLib.COM_IDL_connect oCom = new COM_IDL_connectLib.COM_IDL_connect();

oCom.CreateObject(0, 0, 0);

oCom.ExecuteString(".compile 'c:\\test_events.pro'");
oCom.ExecuteString("test_events");

//在test_events界面打开的同时会执行下边的代码
//我们想要的是在test_events事件响应完毕之后再继续下边的代码

MessageBox.Show("继续执行代码");

 

发扬直接发代码的光荣传统,附如下解决方法:

//读取注册表获取IDL安装路径

   RegistryKey rsg = null;

    rsg = Registry.LocalMachine.OpenSubKey("SOFTWARE\\ITT\\IDL\\8.0", true);

    string IDLPath = "";

    if (rsg.GetValue("Installdir") != null) //读取失败返回null
    {
        //初始化IDL80路径
        IDLPath = rsg.GetValue("InstallDir").ToString() + @"IDL80\bin\bin.x86\idlrt.exe";
     }
     else
     {
        MessageBox.Show("未找到IDL文件");
           return;
     }    

    //新建一个进程
     Process myProcess = new Process();           
     string SavFilename = @"D:\IDLWorkspace80\test\test.sav";

     ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(IDLPath, SavFilename);
     myProcess.StartInfo = myProcessStartInfo;
     myProcess.Start();

     //等待myProcess退出
myProcess.WaitForExit();

     //继续执行下面的代码
     MessageBox.Show("继续执行代码");