If you use Icicles then you can quickly select a frame by its name, with completion, using multi-command icicle-select-frame:
icicle-select-frame is an interactive compiled Lisp function in icicles-cmd1.el.
It is bound to C-x 5 o.
(icicle-select-frame)
Select frame by its name and raise it.
A frame name in this context is suffixed as needed by [NUMBER], to make it unique. For example, in a context where frames are named for their buffers and you have two frames showing buffer *Help*, one of the frames will be called *Help*[2] for use with this command.
Read input, then call icicle-select-frame-by-name to act on it.
As always for an Icicles multi-command:
Input-candidate completion and cycling are available. While cycling, these keys with prefix C- are active:
C-mouse-2, C-return - Act on current completion candidate only
C-down, C-wheel-down - Move to next completion candidate and act
C-up, C-wheel-up - Move to previous completion candidate and act
C-next - Move to next apropos-completion candidate and act
C-prior - Move to previous apropos-completion candidate and act
C-end - Move to next prefix-completion candidate and act
C-home - Move to previous prefix-completion candidate and act
C-! - Act on all candidates, successively (careful!)
When candidate action and cycling are combined (e.g. C-next), user option icicle-act-before-cycle-flag determines which occurs first.
With prefix C-M- instead of C-, the same keys (C-M-mouse-2, C-M-RET, C-M-down, and so on) provide help about candidates.
Use mouse-2, RET, or S-RET to finally choose a candidate, or C-g to quit.
This is an Icicles command - see command icicle-mode.
An even handier command is icicle-other-window-or-frame, bound to C-x o by default. It combines several commands for selecting windows or frames.
icicle-other-window-or-frame is an interactive compiled Lisp function in icicles-cmd1.el.
It is bound to C-x o.
(icicle-other-window-or-frame ARG)
Select a window or frame, by name or by order.
This command combines Emacs commands other-window and other-frame, together with Icicles commands icicle-select-window, icicle-select-frame, and icicle-choose-window-for-buffer-display.
Use the prefix argument to choose the behavior, as follows:
With no prefix arg or a non-zero numeric prefix arg: If the selected frame has multiple windows, then this is other-window. Otherwise, it is other-frame.
With a zero prefix arg (e.g. C-0): If the selected frame has multiple windows, then this is icicle-select-window with windows in the frame as candidates. Otherwise (single-window frame), this is icicle-select-frame.
With plain C-u: If the selected frame has multiple windows, then this is icicle-select-window with windows from all visible frames as candidates. Otherwise, this is icicle-select-frame.
With plain C-u C-u: Same as icicle-select-window with a negative prefix arg: Select a window from any frame, including iconified and invisible frames.
With plain C-u C-u C-u: This is icicle-choose-window-for-buffer-display, with windows from all frames (i.e., iconified and invisible) frames as candidates.
If you use library oneonone.el with a standalone minibuffer frame, and if option 1on1-remap-other-frame-command-flag is non-nil, then frame selection can include the standalone minibuffer frame.
By default, Icicle mode remaps all key sequences that are normally bound to other-window to icicle-other-window-or-frame. If you do not want this remapping, then customize option icicle-top-level-key-bindings.
other-framework under Windows? I have that bound toC-`, it allows cycling between frames.