Give me back my dialogs!

320 votes
Version: 
2.4.2
Date Updated: 
11/14/2012
Author Name: 
Lonerobot

Window box is a script (and tutorial) to show you how you can use Dotnet and Win32 methods to get back dialogs you have lost from using multiple monitors.

UPDATE 2.4.2

Fixed an issue with monitor data, it now centers correctly on all screens. Sorry for the delay in finding that one. 

Additional Info: 

Previous Updates :

 

UPDATE 2.4.2

Fixed issue with monitor data, now centers correctly on all screens. 

UPDATE 2.4

Fixed a bug that errors with the SME interface pre max 2011 

 

Update -V2.3

UPDATE 2.3 

Oh Alright, I added Slate Material Editor Support. It's a bit sketchy, it doesnt seem possible to return a Window handle for SME so you have to set it via the MXS interface. The resize is not currently working with the Datagrid, but the Reset to [0,0] works fine, which is probably what most people need. 

I have also fixed a bug - the Base64 function built the icons wrong, the close button should be on the far right. If you delete the icons from the Scripts/lonerobot/assets/icons folder then they will re-build correctly at runtime. 

Slate Material Editor reset added 

UPDATE - V2.2  

Just to note - getpoupdialogs() does not seem to return all of the floating dialogs present in a session of max. This is a change in behaviour from when I originally wrote the script (as the original screenshot will testify, yet since I upgraded to Win7 x64, the same command does not return these windows) You can get a better result in the script by changing the line -

DialogList = for i in (UIAccessor.GetPopupDialogs()) where not i == 0 collect i

to -

DialogList = for i in (windows.getChildrenHWND 0 parent:#max)

           where UIAccessor.IsWindow i[1] and (not i[5] == "AdApplicationButton") and (not i[5] == "") collect i[1]

This seems to give a better result on my Win7 x64 build. I didn't get this issue on vista 32bit so could be something to do with that. With this line it will now list the layer manager, material editor and render dialogs. It does return some toolbars which may or not be required, but better to be more complete than miss some. You can change the original script or download the updated code (version 2.2)

As you can see from the new screenshot, it's not missed any this time, well maybe the Slate Material Editor, but who uses that eh? :-) 

UPDATE - V2.1

 The script has now been updated to remove the dependencies on the ribbon control icons. These have now been integrated into a Base64 encoded string, and builds them automatically when the script is first run. This should remove any icon errors you are seeing (in Max 2012 for example) Window box is a script (and tutorial) to show you how you can use Dotnet and Win32 methods to get back dialogs you have lost from using multiple monitors.

 

LoneRobot

Version Requirement: 
Max 2010/2011/2012
AttachmentSize
lonerobot-windowbox2.2.mcr18.03 KB
lonerobot-windowbox2.3.mcr20.84 KB
lonerobot-windowbox2.4.mcr20.93 KB
lonerobot-windowbox2.4_1.mcr21.18 KB
lonerobot-windowbox2.4_2.mcr21.6 KB

Comments

Comment viewing options

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

Works perfectly

This Script is very useful. Especially when you have multiple monitors and some of the menus dissapears if you turn of one of them. Thanks to the author of the script

savascetin's picture

Easy fix

open in any text editor then replace all instances of "#scripts" with "#userScripts"(without the quotes).

damard's picture

To those with GDI+ error

Make sure you run 3dsMax as administrator when first running the script, as it will create Folders/Files in the #scripts folder.

tasurnin's picture

WindowOps.WindowPosition and Windows taskbar on the left/top

Hello,

I just finished a script that save all the positions of my "popup dialogs" so each time I restart max the dialogs go back to their positions.

I also use WindowOps.WindowPosition to get their position but because my windows taskbar is on the left side of my screen. There is an offset between the position I get through WindowOps.WindowPosition and getDialogPos().
I could use that offset if I only had 1 screen. But as soon I have 2 screens and that the taskbar is not at the same position on the second screen, i'm f***. ^^

Hiding the taskbar when I saved the position could be the solution, but it's really slow with hiddenDosCommand.

Do you have any idea how to fix my issue?

By the way, your script is really nice. ;)

Joachim

tomy3d's picture

Not work 2017

As well says in the explanation, works at max until the 2012 version. A pity. I hope it updates. a greeting

dimwalker's picture

where can I find icons?

Script can't find png files.
I'll try to create placeholders for now, but feel like I'm missing something - script doesn't install any files, but tries to reach it.

LoneRobot's picture

Thnx 4 trolling

If you can't see your window, how do you know if it is active? This script makes finding any dialog tied to max easy. If you can't see the application of the script, then you've obviously not had this issue.

Podmentor's picture

Thnx 4 nothing

Happy users of Windows 7 can do this much more easier, for u can just simply press windows button on your keyboard and left or right arrow (considering that yor window is active at this time). Learn Russian and read our forums. From Russia with love =) "хароший скрипт, интересный"...

Phokka's picture

Problem

This appears when press winbox button

AttachmentSize
captura.jpg 151.29 KB
Anubis's picture

thanks

thanks

my recent MAXScripts RSS (archive here)

Comment viewing options

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