【UG\NX二次开发】代码关闭Block UI界面(模拟点击确认按钮)- 结合WINAPI -(SendMessage(UGUIID, BM_CLICK, 0, 0) )

开发过程中,往往需要在执行完某段逻辑后Block UI界面自动关闭,虽然有内部函数可以关闭窗口,但是再次打开,UI控件并未保存上一次的参数数据,生成的东西也不见了,类似点击了取消按钮的效果。

尝试WINAPI,找到确认按钮句柄,发送点击消息,可以做到关闭界面并保存界面数据。

句柄获取步骤如以往博客所述:

【UG\NX二次开发】完美隐藏UI控件句柄 (无需重叠控件,控件在隐藏时仍可使用) - 结合WINAPI -(ShowWindow(UGUIID, SW_HIDE))-CSDN博客

直接放代码:

#include 
#include 
 
UF_initialize();
 
BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam) 
{ 
	char s[200] = { 0 };
	memset(s, 0, 200);
	GetWindowTextA(hwndChild, s, 200);//获取当前hwndChild的名称

	//UF_UI_open_listing_window();//调试用
	//UF_UI_write_listing_window(s);
	//UF_UI_write_listing_window("\n");

	if (strcmp(s,"确定")==0)//将名称与类名称进行匹配,找到控件句柄
		SendMessage(hwndChild, BM_CLICK, 0, 0); //发送点击消息

	return TRUE;
}

/*关闭当前窗口*/
void closeDialog()
{
	HWND hd = GetForegroundWindow();      //得到当前UG进程窗口
	EnumChildWindows(hd,EnumChildProc,0);//遍历窗口中所有子控件(在EnumChildProc回调中进行处理)
}
 
int main()
{
	closeDialog();
}
 
UF_terminate();

你可能感兴趣的:(NX二次开发专栏,NX二次开发)