My interfaces to slot systems use the following API's for IPC: CallWindowProc CopyMemory GetDesktopWindow GetWindow GetWindowText SendMessage SetWindowLong The process is: SetWindowLong to trap windows messages in your message handler. Send a message: GetDesktopWindow for the topmost window handle. Loop until found GetWindowText to see the window caption If destination window is found, CopyMemory to build a byte array (it's a VB convolution) SendMessage to the window end if GetWindow for next window in chain loop To receive messages: CopyMemory in your message handler to access the text. (This may be a VB thing, also) CallWindowProc to resume message processing SetWindowLong to unhook your program from windows messages. I hope this is helpful. If you haven't called API's from VB, it may seem like unnecessary steps are performed. That's because some C++ datatypes are not present in VB.