Касательно UI, больше всего, когда сижу в винде, мне не хватает мега-фичи юниксовых window manager'ов: возможность таскать окна зажимая левый ALT и кликая левой кнопкой мыши на любой области окна и возможность изменять размер окна опять же зажимая левый ALT и кликая правой кнопкой мыши на любой области окна (и таща ее вправо-влево, вверх-вниз).
Вобщем, сидел я, тупил в Windows SDK и ВНЕЗАПНО осознал что это не так уж и сложно реализовать и реализовал.
alt_move.zip
В архиве бинарник как для 32-битных компов так и для 64-битных, а также исходники (BSD лицензия).
Содержимое архива также можно
посмотреть в онлайне.
Основная часть README.txt:
A program for Microsoft Windows that allows you to move windows with the left
mouse button (by clicking anywhere on the window) and resize them with the right
mouse button (again, clicking anywhere) while holding down the left ALT key.
USAGE
Run the altmove.exe file in exe_64bit if you have a 64-bit computer or in
exe_32bit if you have a 32-bit computer, if unsure, go with the 32-bit version.
To disable ALT Move, simply run it again, it'll detect that an instance of itself
is already running and it'll terminate it.
If you run altmove.exe and nothing happens (i.e. you can't move/resize windows), then
try this:
Start the Command Prompt
On Windows XP: Start -> Programs -> Accessories -> Command Prompt
On Windows Vista: Start -> All Programs -> Accessories -> Command Prompt
Type in the following command and press Enter:
del %USERPROFILE%\altmove_lock_file /F /A
Now try to run altmove.exe.
For convenience, you might want to add a shortcut to altmove.exe to your Startup
group in the Start menu, so that ALT Move would start with the Windows.
Короче говоря два-раза кликаем altmove.exe -- наслаждаемся новыми удобствами, еще раз два-раза кликаем чтобы от удобств отказаться.
How it's made: делаем DLL библиотеку в которой у нас живет перехватчик событий, в данном случае -- мышиных. Пишем управляющую прогу, которая по большому счету, при запуске просто устанавливает глобальный перехватчик событий с помощью функции SetWindowsHookEx(), перехваченные события идут в DLL'ку. Когда управляющую прогу убивают, она убирает перехватчик. А в DLL'ке, ну просто смотрим, если выполняются необходимые условия (например, зажат левый ALT, юзер нажал левую кнопку мыши и переместил мышь) -- то выполняем соответствующее действие. Вот и все.
Мега-удобная хрень, советую.