如何确认先前是否通过AttachThreadInput附加了某个帖子?

时间:2015-08-13 16:03:24

标签: c++ winapi

TL;博士

使用AttachThreadInput函数时,我可以选择附加或分离另一个帖子。

有没有办法知道附件是否已经存在?

长版

我有A班:

ClassA::attach(::HWND window)
{ 
    ::AttachThreadInput(::GetCurrentThreadId(), ::GetWindowThreadProcessId(window, NULL), TRUE);
}

ClassA::detach(::HWND window)
{ 
    ::AttachThreadInput(::GetCurrentThreadId(), ::GetWindowThreadProcessId(window, NULL), FALSE);
}

ClassA::doSomething()
{
    // things happen
}

......和B班:

ClassB::doSomethingElse(::HWND window)
{
    ::AttachThreadInput(::GetCurrentThreadId(), ::GetWindowThreadProcessId(window, NULL), TRUE);

    // do something else

    ::AttachThreadInput(::GetCurrentThreadId(), ::GetWindowThreadProcessId(window, NULL), FALSE);
}

我想修改B类,以便它知道已经存在的附件,并且只有在附件不存在时才附加/分离。

这将允许我做这样的事情:

ClassA a;
ClassB b;

a.attach(window);
b.doSomethingElse(window);
a.doSomething();
a.detach(window);

1 个答案:

答案 0 :(得分:3)

没有API可以查询现有附件。你必须自己跟踪附件。