NXOPEN关于使用代码关闭UI
NXOPEN关于使用代码关闭UI
因为初始化不了,所以不能用
theDialog->PerformApply();
所以改用cwnd类模拟点击窗口来完成
以下头文件必须在最后面
#include <afxwin.h> //必写
#undef CreateDialog //必写
#include <NXOpen\UI.hxx> //必写
如果不这样写,VS报错:
class "NXOpen::UI" 没有成员 "CreateDialogParamW"
_USRDLL
“DllMain 已经在 MSVCRTD.lib(dllmain.obj) 中定义以及找到一个或多个多重定义的符号”错误的解决方法
通过设置:项目-》属性-》配置属性-》C/C++/预处理器,去掉预处理器定义中的_USRDLL
还要把cpp里
#if CALLBACK
这一段的内容全部注释,不注释会报错
void Hello::Moni()
{
try
{
//HWND hWnd = ::GetForegroundWindow();
//ShowWindow(hWnd, SW_MINIMIZE);//最小化 hwnd 所代表的窗口
CWnd* pDesktopWnd = CWnd::GetForegroundWindow(); //1.先获得当前活动窗口
CWnd* pWnd = pDesktopWnd->GetWindow(GW_CHILD); //2.获得一个子窗口
while (pWnd != NULL) //循环取得桌面下的所有子窗口
{
CWnd* pWnd2 = pWnd->GetWindow(GW_CHILD); //3.获得一个子窗口
while (pWnd2 != NULL)//循环取得桌面下的所有子窗口
{
CString strClassName = _T("");
::GetClassName(pWnd2->GetSafeHwnd(), strClassName.GetBuffer(256), 256); //获得窗口类名
CString strWindowText = _T("");
::GetWindowText(pWnd2->GetSafeHwnd(), strWindowText.GetBuffer(256), 256); //获得窗口标题
if (0 == strcmp(strClassName.GetBuffer(256), "Button") && (0 == strcmp(strWindowText.GetBuffer(256), "确定") || 0 == strcmp(strWindowText.GetBuffer(256), "OK")))
{
pWnd2->SetActiveWindow(); //激活当前按钮
PostMessage(pWnd2->GetSafeHwnd(), BM_CLICK, NULL, NULL); //模拟鼠标点击确定
//::SendMessage(pWnd2->GetSafeHwnd(), BM_CLICK, 0, 0); //模拟按键点击确定(不知道为啥没反应)
//::SendMessage(pWnd2->GetSafeHwnd(), WM_CLOSE, 0, 0); //模拟按键点击关闭
}
pWnd2 = pWnd2->GetWindow(GW_HWNDNEXT); //继续下一个子窗口
}
pWnd = pWnd->GetWindow(GW_HWNDNEXT); //继续下一个子窗口
}
}
catch (exception& ex)
{
//---- Enter your exception handling code here -----
Hello::theUI->NXMessageBox()->Show("模拟点击", NXOpen::NXMessageBox::DialogTypeError, ex.what());
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?