两个应用程序之间怎么共享一个全局队列啊?(在线等) ( 积分: 50 )

  • 主题发起人 主题发起人 wulengbing
  • 开始时间 开始时间
W

wulengbing

Unregistered / Unconfirmed
GUEST, unregistred user!
某种需求。一个应用程序往里写,另一个程序读。<br>看我写的代码,会报错procedure&nbsp;TForm1.Button1Click(Sender:&nbsp;TObject);<br>var<br>&nbsp;pRepData:pTRepData;<br>begin<br>&nbsp;&nbsp;//创建映射文件<br>&nbsp;&nbsp;hMapping&nbsp;:=&nbsp;CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE,0,SizeOf(TRepData),'RepData');<br>&nbsp;&nbsp;if&nbsp;hMapping&nbsp;=&nbsp;0&nbsp;then&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;ShowMessage('不能创建内存映射文件');<br>&nbsp;&nbsp;&nbsp;&nbsp;Exit;<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;//将映射文件映射到本进程<br>&nbsp;&nbsp;RepMemQueue&nbsp;:=&nbsp;TQueue(MapViewOfFile(hMapping,FILE_MAP_ALL_ACCESS,0,0,0));<br>&nbsp;&nbsp;if&nbsp;RepMemQueue&nbsp;=&nbsp;nil&nbsp;then&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(hMapping);<br>&nbsp;&nbsp;&nbsp;&nbsp;ShowMessage('不能创建映射视图');<br>&nbsp;&nbsp;&nbsp;&nbsp;Exit;<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;New(pRepData);<br>&nbsp;&nbsp;pRepData^.name&nbsp;:=&nbsp;'test1';<br>&nbsp;&nbsp;pRepData.value&nbsp;:=&nbsp;0.05;<br>&nbsp;&nbsp;RepMemQueue.Push(pRepData);&nbsp;&nbsp;&nbsp;//报错<br>end;<br><br>我的目的是创建一个全局TQueue对象,两个应用程序能够操作这个对象。<br>请指教。<br>谢谢
 
楼主的思路好像不正确,内存共享文件能够共享数据,但是不能共享指针。
 
既然是一个写一个读,为什么不使用&nbsp;WM_COPYDATA&nbsp;消息进行通讯呢
 
后退
顶部