这个功能是帮一个朋友做的,他使用星空外挂里的计算最短刀长功能时,由于该功能会频繁的弹窗,所以导致他在另一个NX中做其他工作时,这个弹窗的NX窗体会自动激活为顶层窗口,从而打断工作。 所以他找到一个小工具,这个小工具可以对某一个进程的窗口进行隐藏,但选择进程时,由于NX的窗体名称都一样,所以根本不知道应该选择哪一个。
这个情况同样会经常出现在开发人员身上,例如想对NX进行附加进程调试时,多个NX窗口的标题和进程名都相同:
对于该问题,可以写一个动态设置NX窗体标题的脚本,并添加到NX的startup目录,并通过定时器定时执行来设置及更新标题。
首先创建一个项目,并将项目入口设置为StartUp入口。
写一个满足EventHandler委托的函数,在该函数中获取所有进程,并遍历处理进程对应的窗体的标题文本。
public static void SetTitle(object v, System.EventArgs args)
{
int n = 1;
var porcess = Process.GetProcesses();
foreach (var item in porcess)
{
if (item.ProcessName == "ugraf")
{
n++;
if (item.MainWindowTitle.Contains("个NX窗口")) continue;
Win32Api.WindowsAPI.SetWindowText(item.MainWindowHandle, item.MainWindowTitle + $" 第 {n - 1} 个NX窗口");
}
}
}
在Startup入口函数中,实例化一个定时器,将SetTitle函数绑定为其事件,并启动该定时器。该定时器将在其生命周期内每间隔1000ms执行一次SetTitle函数中的代码。
public static int Startup()
{
int retValue = 0;
try
{
Timer tm = new Timer();
tm.Tick += SetTitle; //绑定事件
tm.Interval = 1000; //设置触发间隔
tm.Start(); //启动Timer
}
catch (NXOpen.NXException ex)
{
}
return retValue;
}
编译项目,并将编译后的DLL程序复制到NX挂载目录中的startup目录中
Tips: 挂载目录如下图所示,将二次开发主目录写入到custom_dirs.dat中,NX即可自动运行该目录下Startup目录中的可执行程序。
随后启动多个NX,会发现每个NX窗口都会有不一样的标题名称了。