c - 如何确定当前进程中 COM 使用的内部 HWND?

标签 c winapi com hwnd sta

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

最佳答案

试试这个:

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 );
}

让我知道它是否有效。

关于c - 如何确定当前进程中 COM 使用的内部 HWND?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45385193/

相关文章:

c++ - 为什么这个 COM IUnknown::Release 的实现有效?

c# - Marshal.QueryInterface() - 如何使用返回值?

c - pthread_exit 和/或 pthread_join 导致中止和 SegFaults

在 C 内部控制部分声明变量时出现编译时错误

c++ - 基于对话框的 MFC 应用程序中的视觉样式?

windows - 所有者和拥有的窗口激活问题

c++ - 坚持让 Windows.h 工作,在编译之前没有错误消息。

C++ 微软 : How to associate uuid/guid with template specialization

c - Eclipse-Photon 三元运算符编译错误

c - 在 for 循环中重新分配