Two instances of Windows Explorer side by side

A Python receipt from Activestate which run two copies of Windows Explorer, resize them to fit each of them to half the desktop size and place them side by side to facilitate file management between two directories or disk drives.

from win32gui import EnumWindows, SetWindowPos, GetDesktopWindow, \
     GetWindowRect, FindWindow, GetClassName, ShowWindow
import os, time
import pywintypes

def enumWinProc(h, lparams):
    
    if GetClassName(h) == 'ExploreWClass':
        lparams.append(h)

winList = []
EnumWindows(enumWinProc,winList)
winCnt = len(winList)
if winCnt == 0: # No Explorer running
    os.system('explorer.exe')
    while 1:
        try:
            FindWindow('ExploreWClass',None) #Wait for first instance to run
        except pywintypes.error,e:
            pass
        else:
            break
        time.sleep(0.1) # Sleep for a while before continuing
    os.system('explorer.exe') # Start second instance
elif winCnt == 1:
    os.system('explorer.exe') # Start second instance
time.sleep(2) # Wait for Explorer to run
winList = []
EnumWindows(enumWinProc,winList) # Get handles of running Explorer
hDesk = GetDesktopWindow()
(dLeft,dTop,dRight,dBottom) = GetWindowRect(hDesk) # Get desktop size
SetWindowPos(winList[0],0,dRight/2,0,dRight/2,dBottom,0) # Set the windows sizes
SetWindowPos(winList[1],0,0,0,dRight/2,dBottom,0)
ShowWindow(winList[0],1) #Show the windows
ShowWindow(winList[1],1)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.