Call ShowWindow() of shell32.dll for manage size of (Internet) Explorer windows by path.
pip install --user pywin32
| import os | |
| import sys | |
| import ctypes | |
| from pathlib import Path | |
| from win32com.client import Dispatch | |
| COMMANDS = { | |
| 'normal': 1, | |
| 'min': 2, | |
| 'max': 3, | |
| } | |
| def main(): | |
| command, absolute_path = get_argsuments() | |
| window = getExplorerWindowByPath(absolute_path) | |
| if window is None: | |
| print_err('There is not any Explorer window with path {}'.format(absolute_path)) | |
| exit(3) | |
| showWindow(window, command) | |
| def get_argsuments(): | |
| arguments = sys.argv[1:] | |
| if len(arguments) != 2: | |
| print_err('Bad arguments; got {count} required 2{nl}Valid parameters: COMMANDS PATH{nl}'.format( | |
| count=len(arguments), | |
| nl=os.linesep | |
| )) | |
| exit(1) | |
| command_name, path = arguments | |
| command = COMMANDS.get(command_name) | |
| if command is None: | |
| print_err('Unknown command {!r}'.format(command_name)) | |
| print_commands() | |
| exit(2) | |
| absolute_path = os.path.abspath(path) | |
| return command, absolute_path | |
| def print_commands(): | |
| print_err('Available commands:{}{}'.format( | |
| os.linesep, | |
| os.linesep.join([' {}'.format(k) for k in COMMANDS]) | |
| )) | |
| def getExplorerWindowByPath(absolute_path): | |
| url = Path(absolute_path).as_uri() | |
| for window in getExplorerWindows(): | |
| if window.LocationUrl.lower() == url.lower(): | |
| return window | |
| return None | |
| def getExplorerWindows(): | |
| return Dispatch("Shell.Application").Windows() | |
| def showWindow(window, command): | |
| ctypes.windll.user32.ShowWindow(window.hwnd, command) | |
| def print_err(text): | |
| print(text, file=sys.stderr) | |
| if __name__ == '__main__': | |
| main() |