The following list outlines in detail what occurs:
- A thread creates a window that has a corresponding taskbar button.
- The thread makes outgoing COM calls in response to posted window messages, such as WM_TIMER messages.
- The user right-clicks the taskbar button or sets the keyboard focus on the button. Then the user presses the SHIFT+F10 key combination or the Application key.
- The shell sends a message to the thread using the SendNotifyMessage function. The default message handler displays the system menu and runs a message loop to service the menu.
- The thread receives and processes a posted message that causes it to attempt an outgoing COM call.
- The COM call fails with RPC_E_CANTCALLOUT_ININPUTSYNCCALL.
To work around this problem if the application is running Windows 95, Windows 98, or Windows NT 4.0, use one of the following methods:
- Allow outgoing COM calls to fail with RPC_E_CANTCALLOUT_ININPUTSYNCCALL.
- Call InSendMessage before you make any outbound COM calls in response to posted window messages. If InSendMessage returns TRUE, do not attempt an outgoing COM call.
- Make outgoing COM calls on another thread.
- Prevent the taskbar from creating a button for the window. To do this, create the window with the WS_EX_TOOLWINDOW extended style, or create a hidden window, and make the hidden window the owner of the visible window.
This bug was corrected in Windows 2000.
Article ID: 198996 - Last Review: Mar 24, 2009 - Revision: 1