【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("继续执行代码");

浙公网安备 33010602011771号