I have noticed that there are quite a few community wikis about "Tips & Tricks" or "Hidden Features" in programming languages and APIs here at Stack Overflow. But I could not find any about my own personal favourites: Win32 API and Delphi. Therefore I start my "own" CW about Win32 API.
There are (at least) two kinds of Win API users: those that have been brought up using Windows API in C/C++, and those that have been brought up using some level of abstraction above the Windows API. I belong to the latter category, being brought up using Delphi's VCL. But over the last five years, I have become increasingly interested in the underlaying API of the Windows operating system, and today I work a lot with it.
Depending on which category a programmer belongs to, he (or possibly she) will think that different things are "cool" in the Windows API. For instance, whereas a VCL-brought up developer might think it it very cool to
var
errIcon: HICON;
begin
errIcon := LoadIcon(0, IDI_ERROR);
DrawIcon(Canvas.Handle, 10, 10, errIcon),
a programmer brought up using Windows API in C will not be as impressed.
But no matter how you are "brought up": what are the coolest "tricks" in Windows API?
I start by listing a few of my own favourites, some of which are more "cool" than "useful", though:
LoadIcon
andMessageBeep
can load/play system default icons and sounds.- Open the CD tray:
mciSendString('Set cdaudio door open wait', nil, 0, 0);
- Fade out the screen (Windows Vista and later) and turn off the monitor:
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
GetWindowDC(GetDesktopWindow)
returns the DC of the desktop.- Using
GetSystemMenu
one can add/change/remove menu items on the system menu of a window. Sometimes very nice. DrawThemeBackground
and the other theme service functions, which lets you draw details of the current theme whereever you want them. Candy: http://msdn.microsoft.com/en-us/library/bb773210(VS.85).aspx