What’s the difference between GetKeyState and GetAsyncKeyState?

I’ve seen some confusion over the difference between the GetKeyState function and the GetAsyncKeyState function. GetKeyState returns the virtual key state. In other words, GetKeyState reports the state of the keyboard based on the messages you have retrieved from your input queue. This is not the same as the physical keyboard state: If the user…


Why doesn’t the RunAs program accept a password on the command line?

The RunAs program demands that you type the password manually. Why doesn’t it accept a password on the command line? This was a conscious decision. If it were possible to pass the password on the command line, people would start embedding passwords into batch files and logon scripts, which is laughably insecure. In other words,…


Simple things you can do with the ShellExecuteEx function

Here’s a tiny little program: #include <windows.h> #include <shellapi.h> int __cdecl main(int argc, char **argv) { if (argc == 3) { SHELLEXECUTEINFO sei = { sizeof(sei) }; sei.fMask = SEE_MASK_FLAG_DDEWAIT; sei.nShow = SW_SHOWNORMAL; // added 27 Nov sei.lpVerb = argv[1]; sei.lpFile = argv[2]; ShellExecuteEx(&sei); } return 0; } This is a little program that takes…


A sample of desktop icon text effects

It seems everybody and his brother has an obvious solution to the desktop background problem. Of course, none of these people actually tested their solution to see if it actually was usable. Because geniuses don’t need to test their grand pronouncements. That’s why they’re called geniuses. Let’s see how well these geniuses fared. I sat…


Why can’t you drop directly onto a taskbar button?

If you drag a object and drop it onto a taskbar button, you get an error message that says, You cannot drop an item onto a button on the taskbar. However, if you drag the item over a button without releasing the mouse button, the window will open after a moment, allowing you to drop…


Why do folders like “My Pictures” come back after I delete them?

Some people are offended by the special folders like “My Pictures” and “My Music” and delete them, only to find them being re-created. What’s going on? Windows itself is okay with you deleting those folders. Some corporations, for example, remove those folders from their employees’ machines because they don’t want the employees looking at pictures…


When people ask for security holes as features: World-writable files

If I had a nickel each time somebody asked for a feature that was a security hole… I’d have a lot of nickels. For example, “I want a file that all users can write to. My program will use it as a common database of goodies.” This is a security hole. For a start, there’s…


The various ways of sending a message

There are several variations on the SendMessage function, but some are special cases of others. The simplest version is SendMessage itself, which sends a message and waits indefinitely for the response. The next level up is SendMessageTimeout which sends a message and waits for the response or until a certain amount of time has elapsed….


Am I sorry or not?

One of the consequences of the New Internet World Order is that it is very easy to set up a web site like www.sorryeverybody.com and equally easy to set up a response like www.notsorryeverybody.com. This state of affairs clearly calls out for some sort of competition between the two. At dinner last night, someone suggested…


If a program and a folder have the same name, the shell prefers the program

If you have both a folder named, say, C:\Folder and a program named C:\Folder.exe and you type C:\Folder into the Start.Run dialog, you get the program and not the folder. Why is that? Because it is common to have D:\Setup.exe D:\Setup\… where there is a setup program in the root, as well as a setup…