With the two previous techniques, your program has no way to control which machine
OCRClient should talk to. Because there’s no way to programmatically specify a server destination, COM looks into the registry to pull out a pre-configured server destination. The technique that we’re about to discuss allows us to control which machine the
OCRClient application should communicate with. To do this, we need to use one of the COM activation API functions discussed in Chapter 4. The first thing that you should do is to add a handler for the
Manual button, because you will need to add code to this handler. We’ll do that now, naming the handler OnManual.
COM publishes a number of activation API functions. The lowest API function is CoGetClassObject, which returns a requested class factory interface pointer for object creation. There are also the CoGetInstanceFromFile and CoGetInstanceFromIStorage API functions that activate an object and initialize it with persistent data.
However, the one that we often use is CoCreateInstanceEx, which allows us to pass along two important pieces of information. The first is the
COSERVERINFO structure, which allows us to set security options and server destination. In this section, we will be simple and just set the server destination, as the security member of the
COSERVERINFO structure is discussed in detail in Chapter 5 and Chapter 9. The second structure that you need to know is
MULTI_QI, which allows ...