NX二次开发 动态设置NX窗体的标题文本 ( 使用WindowsAPI )

文章介绍了一个针对NX软件多窗口干扰问题的解决方案。当使用特定功能如星空外挂时,由于频繁弹窗导致工作被打断。为了解决这个问题,提出了编写脚本动态设置NX窗口标题的方法,通过定时器每秒执行一次,使每个NX窗口具有独特的标题,方便用户识别和管理。此方法也适用于开发人员在进行进程调试时避免混淆。
摘要由CSDN通过智能技术生成

这个功能是帮一个朋友做的,他使用星空外挂里的计算最短刀长功能时,由于该功能会频繁的弹窗,所以导致他在另一个NX中做其他工作时,这个弹窗的NX窗体会自动激活为顶层窗口,从而打断工作。 所以他找到一个小工具,这个小工具可以对某一个进程的窗口进行隐藏,但选择进程时,由于NX的窗体名称都一样,所以根本不知道应该选择哪一个。

这个情况同样会经常出现在开发人员身上,例如想对NX进行附加进程调试时,多个NX窗口的标题和进程名都相同:

对于该问题,可以写一个动态设置NX窗体标题的脚本,并添加到NX的startup目录,并通过定时器定时执行来设置及更新标题。

  1. 首先创建一个项目,并将项目入口设置为StartUp入口。

  1. 写一个满足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窗口");
            }
        }
    }

  1. 在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;
    }

  1. 编译项目,并将编译后的DLL程序复制到NX挂载目录中的startup目录中

Tips: 挂载目录如下图所示,将二次开发主目录写入到custom_dirs.dat中,NX即可自动运行该目录下Startup目录中的可执行程序。

随后启动多个NX,会发现每个NX窗口都会有不一样的标题名称了。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值