uiAccessor.getWindowText hwnd not working

Hi, I'm trying two methods to press the default buttons of the 'V-Ray warning' dialog but neither are working.

If I evaluate
uiAccessor.getWindowText (dialogMonitorOps.getWindowHandle())

it returns
undefined

I know I can use this (But, that doesn't have a false switch):
setVRaySilentMode()

It's just, I need to get this to work with other scripts I've been working on, not just the V-Ray warning dialog. I've not gotten this to work for a while now and I'm nearly sure that it's something to do with my system.

Here's the two methods I've tried:

/* METHOD 1 */
clearlistener()
dialogMonitorOps.unRegisterNotification id:#VrayButtonYes
fn DiaMonOps_CloseVray = (
	local hwnd = dialogMonitorOps.getWindowHandle()
	local hwndChild = UIAccessor.GetChildWindows hwnd
	for i in hwndChild where uiAccessor.getWindowText i == "V-Ray warning" do
	(
		--   		uiAccessor.pressButtonByName hwnd "&Yes"
		uiAccessor.pressDefaultButton()
		)
	true
	)
dialogMonitorOps.enabled = true
dialogMonitorOps.interactive = false
dialogMonitorOps.registerNotification DiaMonOps_CloseVray id:#VrayButtonYes
 
 
/* METHOD 2 */
clearlistener()
dialogMonitorOps.unRegisterNotification id:#VrayButtonYes
fn DiaMonOps_CloseVray = (
	local hwnd = dialogMonitorOps.getWindowHandle()
	if uiAccessor.getWindowText hwnd == "V-Ray warning" do
	(
		--   		uiAccessor.pressButtonByName hwnd "&Yes"
		uiAccessor.pressDefaultButton()
		)
	true
	)
dialogMonitorOps.enabled = true
dialogMonitorOps.interactive = false
dialogMonitorOps.registerNotification DiaMonOps_CloseVray id:#VrayButtonYes
 
-- setVRaySilentMode()

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
jahman's picture

You can use Spy++ to

You can use Spy++ to determine parent of this message window and all the other info you may need.
btw. Any idea of how to get this warning window? Curious to test it myself.

3dwannab's picture

The warning window is created

The warning window is created after opening an old version of a vray file in a newer install.

It's the one where it asks you, yes to update or no to render as was.
You cannot close this dialog via the Ops method.

PS. It was a startup script of my own that was hijacking the system and preventing it from firing. Yet to find the part of the script which caused the problem.

pixamoon's picture

`

probably is not linked to max window

try this:

try(destroyDialog ::textDialog)catch()
 
rollout textDialog "" width:100 height:20 (
 
	timer tm1 interval:500 active:true
 
 
	on tm1 tick do (
		for o in UIAccessor.GetChildWindows 0 where (t = UIAccessor.GetWindowText o) != undefined and tolower t == "v-ray warning" do (
			print "Found in method 1"
			print t
			UIAccessor.CloseDialog o
		)
 
	)
 
)
 
createDialog textDialog
3dwannab's picture

Yeah, that worked. Thanks.

But I'm finding it hard to understand why the function is not firing using:

DialogMonitorOPS.RegisterNotification DiaMonOps_CloseVray id:#VrayButtonYes

It seems that 'DialogMonitorOPS.RegisterNotification' function method is not working for me because the function is not fired every time a dialog pops up.

Sooooo..., I found the problem!!

From this thread, I found out that startup scripts could be the culprit.

https://forums.autodesk.com/t5/3ds-max-programming/maxscript-dialogmonit...

I managed to find that it was a startup script in the user startup folder. Needless to say, it was one that I wrote. I've yet to find the culprit part but just glad I've found the issue.

Now to fix it!

Thanks P and sorry for wasting your time ;)

pixamoon's picture

`

Hi, try with print to see what is exact window title

try to use also findString title "v-ray" or findString title "v-ray warning"

	fn DiaMonOps_CloseVray = try(
		local	hwnd = DialogMonitorOPS.GetWindowHandle()
		local title = UIAccessor.GetWindowText hwnd
 
		print title
 
		if title != undefined and (toLower title == "v-ray warning" or findstring (toLower title) "v-ray" != undefined) then
			uiAccessor.pressDefaultButton()
 
		true
 
	)catch()
 
	DialogMonitorOPS.unRegisterNotification id:#VrayButtonYes
	DialogMonitorOPS.RegisterNotification DiaMonOps_CloseVray id:#VrayButtonYes
	DialogMonitorOPS.Enabled = true
3dwannab's picture

Thanks.. This sucks!

Thanks.. This sucks! That doesn't work. It's like it's not firing the function.

What does this return for you?
DialogMonitorOPS.GetWindowHandle()

I get
0P

I've checked the list of active OPS and it displays the one you gave, so somethings not quite right. My fresh install of 2017 is the same.

DialogMonitorOPS.ShowNotification()
--> id:#VrayButtonYes   function: DiaMonOps_CloseVray()

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.