如何在当前流程中确定COM使用的内部HWND?

时间:2017-07-29 04:15:08

标签: c winapi com hwnd sta

我希望在我的进程中将消息直接发布到COM拥有的HWND。如何获得COM在单线程单元模式下使用的HWND?

1 个答案:

答案 0 :(得分:0)

试试这个:

HWND prevWindow = NULL;
HWND hwnd;
for ( ;; )
{
    hwnd = FindWindowEx( HWND_MESSAGE, prevWindow, L"OleMainThreadWndClass", NULL );
    if ( !hwnd )
        break;

    if ( GetWindowThreadProcessId( hwnd, NULL ) == GetCurrentThreadId() )
        break;

    prevWindow = hwnd;


    WCHAR className[255];
    *className = 0;
    ::GetClassName( hwnd, className, 255 );
}

让我知道它是否有效。