关于不同进程之间通信的问题!!
..............................
下文是我在网上看到的!!!!
---以下方法可以实现通讯,但有些疑问!希望达人指教!!
---谢谢了! ^_^
------------------------------------------------------------------------
A:我认为你应该在两个进程的最高级窗口中都注册该消息.请看下例:
static UINT sBroadcastCommand = ::RegisterWindowMessage( _T("BroadcastCommand"));
BEGIN_MESSAGE_MAP( Gui_Top_Level_MainFrame, Gui_MainFrame )
ON_REGISTERED_MESSAGE( sBroadcastCommand, onBroadcastCommand )
END_MESSAGE_MAP()
LRESULT Gui_MainFrame :: onBroadcastCommand( UINT aMsg, LPARAM lParam )
{
your code...
}然后发送进程应该包含:
static UINT sBroadcastCommand = ::RegisterWindowMessage( _T("BroadcastCommand"));
void Someclass :: someMethod( void )
{
::PostMessage( (HWND)HWND_BROADCAST,sBroadcastCommand, 0,yourMessageId );
}
------------------------------------------------------------------------------------
以下是我的疑问!!!
1: 在onBroadcastCommand( UINT aMsg, LPARAM lParam )中的aMsg是什么? 一开始我以为是消息值(既是sBroadcastCommand )但后来发现发送消息时的值,和接受进程中的aMsg的值不相同,
2: 广播消息时,如果我想传输一个字符串给接受进程,发现失败了(发送时字符的地址和接受的地址不相同),但如果传输的是整数就OK,????
..............................
下文是我在网上看到的!!!!
---以下方法可以实现通讯,但有些疑问!希望达人指教!!
---谢谢了! ^_^
------------------------------------------------------------------------
A:我认为你应该在两个进程的最高级窗口中都注册该消息.请看下例:
static UINT sBroadcastCommand = ::RegisterWindowMessage( _T("BroadcastCommand"));
BEGIN_MESSAGE_MAP( Gui_Top_Level_MainFrame, Gui_MainFrame )
ON_REGISTERED_MESSAGE( sBroadcastCommand, onBroadcastCommand )
END_MESSAGE_MAP()
LRESULT Gui_MainFrame :: onBroadcastCommand( UINT aMsg, LPARAM lParam )
{
your code...
}然后发送进程应该包含:
static UINT sBroadcastCommand = ::RegisterWindowMessage( _T("BroadcastCommand"));
void Someclass :: someMethod( void )
{
::PostMessage( (HWND)HWND_BROADCAST,sBroadcastCommand, 0,yourMessageId );
}
------------------------------------------------------------------------------------
以下是我的疑问!!!
1: 在onBroadcastCommand( UINT aMsg, LPARAM lParam )中的aMsg是什么? 一开始我以为是消息值(既是sBroadcastCommand )但后来发现发送消息时的值,和接受进程中的aMsg的值不相同,
2: 广播消息时,如果我想传输一个字符串给接受进程,发现失败了(发送时字符的地址和接受的地址不相同),但如果传输的是整数就OK,????
解决方案 »
- 在CPP后缀名的文件,没有错误,但是到了后缀名C文件就出错。
- 新手问个AfxBeginThread的问题
- 是不是差的移动硬盘盒得不到里面的移动硬盘的SerialNumber
- vc6怎么实现局域网公用盘中文件的读写
- 请问:当网络不通时(可以不是拔掉网线),而socket再没接到返回报告时,还是在发送(这不就不对了嘛)。所以服务器端要马上知道网络不通
- 急救!有没有人用过MapInfo控件
- ADO访问数据库的初始化问题
- 如何滚动CDialog里的内容?(在线守候)
- 在vc中能不能使用一组控件一起身某个方向移动?
- 一道IBM智力题,你能不能答出?
- 有关注册表的问题
- 请问如何在vc中读取显示raw格式的图象
完全按照
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/memory/base/creating_named_shared_memory.asp
上的都不行啊!
我调试CreateFileMapping都没有问题,但在第二个进程取数据时,用GetLastError()获得
"系统找不到指定的档案。 "的错误啊!
对OpenFileMapping部分我什么都没有改啊!
????????
---> WM_COPYDATA这种方法,需要知道对方的句柄,有的麻烦!!