Showing tag results for Code

Mar 5, 2014
Post comments count0
Post likes count1

Why do I have to add 1 to the color index when I set it as the hbrBackground of a window class?

Raymond Chen
Raymond Chen

Our scratch program sets the background color to by setting the class background brush as follows: What's with the ? Okay, first of all, let's backtrack a bit. The real first question is, "What's the deal with taking an integer () and casting it to a and expecting anything sane to happen?" The window manager wants to provide multiple w...

Code
Mar 3, 2014
Post comments count0
Post likes count1

Adventures in automation: Dismissing all message boxes from a particular application but only if they say that the operation succeeded

Raymond Chen
Raymond Chen

Suppose you have a program that is part of your workflow, and it has the annoying habit of showing a message box when it is finished. You want to automate this workflow, and part of that automation is dismissing the message box. Let's start by writing the annoying program: This annoying program pretends to do work for a little while, and then...

Code
Feb 28, 2014
Post comments count0
Post likes count1

How can I detect that my program was run from Task Scheduler, or my custom shortcut, or a service, or whatever

Raymond Chen
Raymond Chen

Suppose you want your program to behave differently depending on whether it is launched from the Start menu, or by clicking the pinned icon on the taskbar, or by Scheduled Task, or from a service, or whatever. How can a program detect and distinguish these scenarios? The answer is you don't. And you shouldn't try. Instead of trying to guess how y...

Code
Feb 27, 2014
Post comments count0
Post likes count1

What does the SEE_MASK_UNICODE flag in ShellExecuteEx actually do?

Raymond Chen
Raymond Chen

Somebody with a rude name wonders what the flag does. It does nothing. The flag was introduced when porting the Windows 95 shell to Windows NT. It happened further back in history than I have permission to access the Windows source code history database, but I can guess how it got introduced. One of the things that the porting team ...

Code
Feb 26, 2014
Post comments count0
Post likes count1

Why are leading digits converted to language-specific digit shapes, but not trailing digits, and how do I suppress the conversion entirely?

Raymond Chen
Raymond Chen

If you have a string like , and you render it on an Arabic system, you might get ٠١٢٣٤ABCDE67890. The leading digits are rendered as Arabic-Indic digits, but the trailing digits are rendered as European digits. What's going on here? This is a feature known as contextual digit substitution. You can specify whether Euro...

Code
Feb 24, 2014
Post comments count0
Post likes count1

Logging the contents of every message box dialog via automation

Raymond Chen
Raymond Chen

Today's Little Program logs the contents of every message box dialog, or anything that vaguely resembles a message box dialog. (Since there's no way for sure to know whether a dialog box is a message box or not.) This is the same pattern as the program we wrote last week, but with different guts when the window opens. This time, we see if the...

Code
Feb 21, 2014
Post comments count0
Post likes count1

How can I make sure my program is launched only from my helper program and no other parent?

Raymond Chen
Raymond Chen

Say you have a collection of programs which work together. One of them is the "master" program that runs the show, and it has a bunch of "assistant" programs that it launches to accomplish various subtasks. These assistants are not meant to be run by themselves; they are meant to be run only by the master program. How do you design the assistant so...

Code
Feb 20, 2014
Post comments count0
Post likes count1

What is the programmatic equivalent to unchecking the box to prevent a file from having its contents indexed?

Raymond Chen
Raymond Chen

A customer wanted to know how they could write a program that automatically checked and unchecked the box that appears on a file's property sheet on the General tab, clicking the Advanced button, and then checking or unchecking the item whose name keeps changing: The checkbox maps to the file attribute formally known as , and informally known as...

Code
Feb 19, 2014
Post comments count0
Post likes count1

When will the static control automatically delete the image loaded into it, and when is it the responsibility of the application?

Raymond Chen
Raymond Chen

If you create a static control with initial contents (for example, by creating a or control in a dialog template), then the static control will load the contents upon creation and destroy the contents upon destruction. So at least in the case where you don't touch the static control, things will work automatically. But once you touch it, thing...

Code
Feb 17, 2014
Post comments count0
Post likes count1

Writing automation to wait for a window to be created (and dismiss it)

Raymond Chen
Raymond Chen

Today's Little Program uses UI Automation to cancel the Run dialog whenever it appears. Why? Well, it's not really useful in and of itself, but it at least provides an example of using UI Automation to wait for an event to occur and then respond to it. Okay, let's see what's going on here. The program registers a delegate with UI automation w...

Code