The UIAccessor Core Interface provides methods to collect data and interact with dialogs and popups in the 3ds Max User Interface. It can be used in conjunction with the Interface: DialogMonitorOPS to perform automated UI handling using a callback function.
Available in 3ds Max 9 and higher.
Methods:
<string>UIAccessor.GetWindowText <HWND>hwnd
Returns the caption of the window with the given handle.
<string>UIAccessor.GetWindowClassName <HWND>hwnd
Returns the window class name of the window with the given handle.
<integer>UIAccessor.GetWindowResourceID <HWND>hwnd
Returns the window resource ID of the window with the given handle.
<HWND by value array>UIAccessor.GetChildWindows <HWND>hwnd
Returns an array with the handles of all child windows of the window with the given
handle. If a child window has child windows on its own, these will also be enumerated.
<HWND by value array>UIAccessor.GetPopupDialogs()
Returns a handles array of the pop up dialogs.
<HWND>UIAccessor.GetParentWindow <HWND>hwnd
Returns the parent window's handle of the window with the given handle.
<HWND>UIAccessor.GetFirstChildWindow <HWND>hwnd
Returns the handle of the first child of the window with the given handle.
<HWND>UIAccessor.GetPrevWindow <HWND>hwnd
Returns the handle of the previous sibling with the same parent as the window with
the given handle.
<HWND>UIAccessor.GetNextWindow <HWND>hwnd
Returns the handle of the next sibling with the same parent as the window with the
given handle.
<bool>UIAccessor.IsWindow <HWND>hwnd
Returns true if the UI element with the given handle is a window, false otherwise.
<string>UIAccessor.GetWindowDllFileName <HWND>hwnd
Returns the DLL file name of the window with the given handle.
<string>UIAccessor.GetWindowDllDescription <HWND>hwnd
Returns the DLL description string of the window with the given handle.
<void>UIAccessor.CloseDialog <HWND>hwnd
Closes the dialog with the given window handle.
<void>UIAccessor.PressDefaultButton()
Presses the default button in the currently active dialog. This method simulates pressing
the Enter key.
<void>UIAccessor.PressButton <HWND>hwnd
Presses the button with the given handle.
<bool>UIAccessor.PressButtonByName <HWND>hwnd <string>name
Presses the button with the name equal to the second argument in the dialog with the
handle given as the first argument.
<bool>UIAccessor.SetWindowText <HWND>hwnd <string>text
Sets the title text of the dialog with the given handle.
<bool>UIAccessor.SendMessageID <HWND>hwndDlg <enum>ID
ID enums: {#IDOK|#IDCANCEL|#IDABORT|#IDRETRY|#IDIGNORE|#IDYES|#IDNO|#IDCLOSE}
Sends the message ID given in the second argument to the window with the given handle.
<bool>UIAccessor.SendMessage <HWND>hwndDlg <integer>MessageID <integer>wParam <integer>lParam
Sends the integer message ID, wParam and lParam given in the second, third and fourth
arguments to the window with the handle given as the first argument.
EXAMPLE
|
DialogMonitorOPS.unRegisterNotification id:#eyeInTheSky
fn dmnotification =
(
WindowHandle = DialogMonitorOPS.GetWindowHandle()
format "Dialog Window Handle: %\n" WindowHandle
format "Dialog Name: %\n" (UIAccessor.GetWindowText WindowHandle)
format "Window Class Name: %\n" (UIAccessor.GetWindowClassName WindowHandle)
format "Window Resource ID: %\n" (UIAccessor.GetWindowResourceID WindowHandle)
format "Is Window: %\n" (UIAccessor.isWindow WindowHandle)
format "Window DLL Filename: %\n" (UIAccessor.GetWindowDllFileName WindowHandle)
format "Window DLL Description: %\n" (UIAccessor.GetWindowDllDescription WindowHandle)
UIAccessor.SetWindowText WindowHandle" All Your Windows Are Belong To Us"
format "=====================\n"
true
)
DialogMonitorOPS.RegisterNotification dmnotification id:#eyeInTheSky
DialogMonitorOPS.Enabled = true
DialogMonitorOPS.ShowNotification()
|
If you would evaluate the code above and open Main Menu > Customize > Customize User
Interface, the output will look like this:
|
Dialog Window Handle: 3213306
Dialog Name:
Window Class Name: Menu
Window Resource ID: 0
Is Window: true
Window DLL Filename: C:\Program Files\Autodesk\3ds Max 2008\3dsmax.exe
Window DLL Description:
=====================
Dialog Window Handle: 2033898
Dialog Name:
Window Class Name: SysShadow
Window Resource ID: 0
Is Window: true
Window DLL Filename: C:\Program Files\Autodesk\3ds Max 2008\3dsmax.exe
Window DLL Description:
=====================
Dialog Window Handle: 3278842
Dialog Name: Customize User Interface
Window Class Name: Dialog
Window Resource ID: 0
Is Window: true
Window DLL Filename: C:\Program Files\Autodesk\3ds Max 2008\CustDlg.dll
Window DLL Description:
=====================
|
The first block returns info about the Customize Menu itself. A Menu does not have
a Dialog Name but is also a form of a window.
The second block shows the shadow of the menu (if enabled in the MS Windows settings)
The third block shows the actual Customize User Interface dialog.
|