在做个程序,要读取串口数据、提取、分析、显示。在程序执行时要调用串口程序,因此要读取到串口进程的数据。这就涉及了所谓进程间的通讯了~~
进程间的通讯方法有多种,就选了个比较简单的,发送COPYDATA消息的方法来实现。调用串口进程后,每每串口接收到数据后,向主进程发送COPYDATA消息,主进程在接到消息后进行处理。
现在将遇到的问题和解决的办法总结下~~备忘……
问题一:如何在子进程(串口进程)中获得主进程的句柄
尝试1:
开始的时候我是想在串口程序的主窗口处理中调用GetWindowThreadProcessId函数的,以为知道当前窗口,就能得到创建当前窗口的进程ID号。但是试过了发现,返回的进程ID号其实还是串口进程的ID号。想想也是~~串口进程的窗口必然是串口进程创建了后再创建的么~~~虽然“此路不通”,但是也学会了GetWindowThreadProcessId的用法。
尝试2:
在创建串口进程的时候,把主进程的句柄作为一个信息传递给串口进程,这样子进程就知道主进程的窗口句柄了。不过问题又来了——那个串口进程的窗口句柄怎么知道呢?~~~⊙﹏⊙b汗
好在知道子进程的句柄和ID号,看看能不能通过这个句柄和ID号得到其主窗口的句柄吧~~
尝试3:
查到网上http://blog.csdn.net/vcforever/archive/2005/03/11/317498.aspx一篇文章,正好是解决这个问题的。偷来用~
其实说的简单点就是使用E