评论会员:mbue 时间:2012/02/06
它不可能。你只能发表messagees他们有一个消息队列的线程。一个进程可以有多个线程 - 线程有没有区分它们的名字。所以,据我所知,没有任何函数来枚举进程的所有线程 - 如果有,你要发布的消息,哪个线程
最佳的解决方案(我看来)是创建一个无形的虚拟窗口。然后你就可以播出的注册信息与其他进程进行通信(ES)。
的问候。
[编辑]
apllication 1
void main()
{
int mterm = RegisterWindowMessage("MyTermMessage");
HWND hwnd = CreateWindowEx(0,__T("STATIC"),__T(""),0,0,0,0,0,0,0,0,0);
for(MSG m;GetMessage(&m,0,0,0);DispatchMessage(&m))
{
if(mterm==m.message)
PostQuitMessage(0);
}
DestroyWindow(hwnd);
}
应用2
{C}你需要一个虚拟的窗口接收广播消息(S) - 那是因为你不可以未知线程的消息。正如我刚才解释 - 有没有函数来获得一个线程ID从另一个进程
。问候:马杜・奈尔:我会建议使用CreateNamedPipe与其他非窗口的过程,而不是使用目前的设计与PostThreadMessage沟通。 PostThreadMessage是只在一个单一的过程中有所帮助。
你可以找到更多的信息:
]。ilostmyid2:我写了这样的程序:
void main()
{
MSG msg;
while (GetMessage(&msg, 0, 0, 0))
{
TranslateMessage(&msg);
if (msg.message == 101)
{
cout << "i got my msg!" << endl;
PostQuitMessage(0);
}
else
DispatchMessage(&msg);
}
}
因为看到这是一个Win32控制台应用程序含有味精循环。我觉得它只有一个线程,主线程组成。对吗?我需要另一个进程发表味精101这一进程。这一切。
现在我能做些什么呢?如何在不可见的窗口可以帮助我吗?
我的解决方案,至今已经写的过程中,要接收味精文件的线程ID!像这样的代码:
{体C3}然后我运行过程中,要发送的消息。然后,它使用fscanf从文件中读取的线程ID,知道有什么线程张贴味精,然后调用PostThreadMessage
任何更好的建议呢? {S0的}
我觉得PostThreadMessage,马杜说,在一个单一进程中的线程之间发送短信息。但它的怪异,有没有办法枚举线程或进程的主线程
评论会员:游客 时间:2012/02/06
!mbue:另一种解决方案:{的C4}祝你好运。|