Я заметил, что в разделе "Переполнение стека" в языках программирования и API есть немало вики-сообществ о "советах и хитростях" или "Скрытых функциях". Но я не мог найти никаких своих личных фаворитов: Win32 API и Delphi. Поэтому я запускаю свой собственный CW для Win32 API.
Есть (по крайней мере) два вида пользователей Win API: те, которые были созданы с использованием Windows API в C/С++, и те, которые были подняты с использованием некоторого уровня абстракции над Windows API. Я принадлежу к последней категории, воспитываясь с помощью Delphi VCL. Но за последние пять лет меня все больше интересует подстилающий API операционной системы Windows, и сегодня я много работаю с ним.
В зависимости от того, к какой категории принадлежит программист, он (или, возможно, она) подумает, что в Windows API разные вещи "круты". Например, в то время как разработчик, созданный VCL, может подумать, что это очень круто для
var
errIcon: HICON;
begin
errIcon := LoadIcon(0, IDI_ERROR);
DrawIcon(Canvas.Handle, 10, 10, errIcon),
программист, созданный с использованием Windows API в C, не будет впечатлен.
Но как бы вы ни были "воспитаны": какие самые крутые "трюки" в Windows API?
Начну с перечисления нескольких моих собственных фаворитов, некоторые из которых более "круты", чем "полезные", хотя:
-
LoadIcon
иMessageBeep
могут загружать/воспроизводить значки и звуки системы по умолчанию. - Откройте лоток для компакт-дисков:
mciSendString('Set cdaudio door open wait', nil, 0, 0);
- Затухайте экран (Windows Vista и более поздние версии) и выключите монитор:
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
-
GetWindowDC(GetDesktopWindow)
возвращает DC рабочего стола. - Используя
GetSystemMenu
, вы можете добавить/изменить/удалить пункты меню в системном меню окна. Иногда очень приятно. -
DrawThemeBackground
и другие функции сервисов темы, которые позволяют вам нарисовать детали текущей темы, если хотите. Candy: Части и состояния