冒险解谜游戏中文网 ChinaAVG

标题: 【汉化资料】window中进程间如何通信 [打印本页]

作者: shane007    时间: 2009-6-27 21:40
标题: 【汉化资料】window中进程间如何通信
一个间接办法,你可用一个"共享名"申请一块共享内存块,进行读写: 9 L, ^1 @( [! P3 V. e
HANDLE GetShare(char * &ShareP,int size,char *ShareName) ' x& Y: f" a8 A+ Z* P
{ & P- |5 x) m6 M5 `, y
//ShareP申请的内存块地址,size字节数,ShareName共享名
% Z6 q, x5 j6 ^HANDLE fh=CreateFileMapping((HANDLE)-1,0,PAGE_READWRITE,0,Size,ShareName);
6 K# s8 H- q6 R% g- zShareP=(char *)MapViewOfFile(fh,FILE_MAP_ALL_ACCESS,0,0,0);
! x0 b( Y2 v4 a* ~% V( O% U) {* {if(GetLastError()!=ERROR_ALREADY_EXISTS) - ^. A/ w! }$ }7 W4 |
ZeroMemory(ShareP,size); // 共享区初始化
4 W$ H2 |9 N* r; i7 X' c. J9 w: treturn(fh);
0 W0 u* }2 u- N+ s) E2 [& C} 0 ~" N% v% t" Y- r$ q. R# @
char * ShareP=NULL; ! B+ x4 W  I3 c, L# f
void test() // 申请一块128个字节的字符数组
# d  J6 o, C% \) m) C7 V7 J{
! `$ U$ L4 C) h% d4 \8 CHANDLE fh=GetShare(ShareP,128,"ShareForMyProg"); * \: ~4 l! R0 w
for (int i=0;i<128;i++)
; T: H, k+ |1 c1 b$ N' z) i5 p4 NShareP=i;
7 t0 i' g( G+ e% u8 H7 SCloseHandle(fh);
' h7 h3 {# l2 {! f: W+ _} / Y% K+ p3 k9 e+ G
如果你的多个程序之间或同一个程序多次同时运行,也可借助这个办法进变量通讯;你的若干个进程可借助于这种办法互相传递数据。
作者: firendless    时间: 2009-7-9 11:21
DDE的也可以...或者配置共享...
作者: shane007    时间: 2009-7-9 11:41
引用第1楼firendless于2009-07-09 11:21发表的  :
  A4 k5 ]: L0 t2 O2 L8 R2 eDDE的也可以...或者配置共享...
% u5 j: i3 S9 e: k9 s4 r
DDE好像是挺老的技术了,win95时代的吧。
作者: firendless    时间: 2009-7-9 11:48
嗯,但是怎么说呢,管道还是最保险和最安全的方法了吧.
作者: shane007    时间: 2009-7-9 11:55
有时间请多来冒泡。




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2