2017-07-29 98 views
-2

我想在我的進程中直接發佈郵件到COM擁有的HWND。如何獲得COM在單線程模式下使用的HWND?如何確定當前進程中COM使用的內部HWND?

+2

這是什麼用例?我不禁想到,這是一個可怕的黑客攻擊,可能是[XY問題](http://xyproblem.info/)的結果。 – IInspectable

+1

這是一個可怕的黑客。你是對的。這不是非法的。是嗎? – zumalifeguard

+0

這是合法的。玩弄電鋸也是合法的。 – IInspectable

回答

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

讓我知道,如果它的工作原理。

+6

你在問自己是否有用?哇:D –

+1

堆棧溢出的答案應該回答被問到的問題。如果您需要詢問,建議的解決方案是否正確,您需要將其提交給您的問題。請使用[編輯](https://stackoverflow.com/posts/45385193/edit)鏈接並更新您的問題。 – IInspectable

+0

好的,可以預見的。我會去做。 – zumalifeguard

相關問題