A native Node.js module for switching to the previously active window on Windows. It programatically replicates what happens when you quickly press and release Alt+Tab.
npm install JosephusPaye/activate-previous-window --save
const { activatePreviousWindow, activatePreviousWindowInChildProcess } = require('activate-previous-window');
// Activate the previous window
activatePreviousWindow();
// Same as above, but run the activation using the standalone binary in a child process.
// Works in environments like Electron, where the Node process is not the same as the main window's.
activatePreviousWindowInChildProcess();
The module follows the approach taken here. That means it:
- Enumerates top-level windows in z-order using EnumWindows().
- Chooses the second window that is visible and has a non-empty title. This is assumes that the topmost (first) window in z-order is the currently active window, and the second window below that is the previously active window.
- Switches to the chosen window using SetForegroundWindow().
I tried a few other approaches that didn't work:
- Simulating Alt+Tab using SendInput(). This led to a flicker where the Alt Tab switcher was visible briefly before the active window was switched.
- Using GetWindow() to get the previous window in Z-order, instead of
EnumWindows()
. This required getting the handle of the current active window, and had problems redirecting focus when switching. UsingSetForegroundWindow()
, the window switched to would come to the top, but won't have keyboard focus.