Notifications
Clear all

[Closed] Disable user properties

Is there a way to make User Properties, inside of Object Properties, read-only except through script?

Basically so a user cannot change the values by hand.

Or has anyone found a work around for this problem?

Thanks

15 Replies

you can’t protect User Properties from changing by hand.
there is AppData mechanism (see mxs -> AppData). it might be what you are looking for…

Hey Denis,

Unfortunately it has to be User Properties. Just trying to find a way for people to not get the urge to try and “fix things” by changing it by hand. You know how it is.

Thanks

1 Reply
(@denist)
Joined: 1 year ago

Posts: 0

encrypt the User Properties text… I would like to see anyone who wants manually fix:
“wqi1bCEDkaYPMNfSyMbnI9JaUZF2DKbUrPcP+VyrwU+W0ES3aD2pZib4UHcZc93k0oKYCqmFEcGEltBDXws”

people…

Maybe use DialogMonitorOPS to detect if the object properties window is opened and then automatically close it?

… and close the max, and shut down the system

Haha, now there’s an idea.

here is another idea – to use callbacks:


fn UserPropNotification type:#pre = 
(
	nodes = callbacks.notificationParam()
	format "% change >>
" (type as string)
	for node in nodes do
	(
		format "	%: %
" node.name (getUserPropBuffer node)
	)
)
callbacks.removescripts id:#UserProp
callbacks.addscript #preNodeUserPropChanged "UserPropNotification type:#pre" id:#UserProp
callbacks.addscript #postNodeUserPropChanged "UserPropNotification type:#post" id:#UserProp

thereby using #pre and #post callbacks you can restore a property

Ah that just might work.

Thanks


 fn notification act:enabled = 
 (
 	hwnd = DialogMonitorOPS.GetWindowHandle()
 	if (win = UIAccessor.isWindow hwnd) and (text = UIAccessor.GetWindowText hwnd) == "Object Properties" do
 	(
 		tb = for w in (windows.getchildrenhwnd hwnd) where w[4] == "Edit" do exit with w[1]
 		EM_SETREADONLY = 0x00CF
 		windows.SendMessage tb EM_SETREADONLY 1 0
 	)
 	true
 )
 -- enable Watcher
 DialogMonitorOPS.RegisterNotification notification id:#UserPropWatcher
 DialogMonitorOPS.enabled = on
 
 -- disable Watcher
 DialogMonitorOPS.enabled = off
 DialogMonitorOPS.unRegisterNotification id:#UserPropWatcher
 
 

using DialogMonitorOPS set user property text box to READ ONLY.
I like it! well done!

Page 1 / 2