首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

PostMessage使用 疑难?解决方案

2012-02-22 
PostMessage使用 疑难??? - C++ Builder / Windows SDK/API请问各位大哥,我想使用PostMessage从程序A传递

PostMessage使用 疑难??? - C++ Builder / Windows SDK/API
请问各位大哥,我想使用PostMessage从程序A传递结构体给程序B。但B接受到的数据总是为空???

程序A:
typedef struct backupinfo
{
  int sign;
  int backup;
  char backuppath[100];
}BackupInfo;

BackupInfo *backup = new BackupInfo() ;
backup->sign = 2;
backup->backup = 1;
strcpy(backup->backuppath, backupdbpath.c_str());
PostMessage(hWnd,1500,NULL,(LPARAM)backup);

程序B:
typedef struct backupinfo
{
  int sign;
  int backup;
  char backuppath[100];
}BackupInfo;
void __fastcall TForm1::WndProc(Messages::TMessage &Message)
{
switch (Message.Msg)
  {
case 1500:
{
BackupInfo *backup = new BackupInfo;
backup = (BackupInfo *)Message.LParam;
int bakup = backup->bakup;
int flag = backup->sign;
  ....
  }
}



[解决办法]
两个不同的进程之间不能这样简单地共享内存数据。
你可以使用WM_COPYDATA消息来传送整个内存块(这个消息必须使用SendMessage发送),或者使用其它IPC方法,如FileMapping,管道或都直接读对方进程内存之类。
[解决办法]
不好意思,我看错了,原来是2个进程之间的通信

热点排行