冒险解谜游戏中文网 ChinaAVG

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

作者: shane007    时间: 2009-6-27 21:40
标题: 【汉化资料】window中进程间如何通信
一个间接办法,你可用一个"共享名"申请一块共享内存块,进行读写: 5 o7 _) F) R3 p+ r- C4 M
HANDLE GetShare(char * &ShareP,int size,char *ShareName) % ]  z" v( Z8 X1 U9 z) d: t
{ 4 |) P  C6 D+ {8 m5 w7 j* o
//ShareP申请的内存块地址,size字节数,ShareName共享名 ; D1 ?& [" m9 ^; a  \
HANDLE fh=CreateFileMapping((HANDLE)-1,0,PAGE_READWRITE,0,Size,ShareName); 7 H2 p  A, ^# e% K
ShareP=(char *)MapViewOfFile(fh,FILE_MAP_ALL_ACCESS,0,0,0); - q! Q( I& u* @6 ]8 ]$ ]- r
if(GetLastError()!=ERROR_ALREADY_EXISTS) 6 \' |+ V, Q& m7 h* h
ZeroMemory(ShareP,size); // 共享区初始化 ( c/ Y" C$ b* R/ ~5 I  \" Q5 V
return(fh); 7 ?; |% r" Z, T2 ^: ~' |0 ~; g
}
6 K5 D8 P, ]! Q/ d( E" rchar * ShareP=NULL;
3 \. |; q; O6 p  K+ p& Ovoid test() // 申请一块128个字节的字符数组
; i& g  U; K6 f0 [* W* o{ 4 S1 t6 \3 h5 }% C/ V2 U8 l. b
HANDLE fh=GetShare(ShareP,128,"ShareForMyProg");
+ I3 u: M6 R7 N" Gfor (int i=0;i<128;i++)
# l% i2 \/ r5 u  U7 }! }8 ~6 S# j  JShareP=i;
+ E  x5 W% {& k* g/ ECloseHandle(fh); 6 Y3 D2 w# {) t- [4 Y3 _- H( \
}
3 p* R, c, q* _3 s5 d* m如果你的多个程序之间或同一个程序多次同时运行,也可借助这个办法进变量通讯;你的若干个进程可借助于这种办法互相传递数据。
作者: firendless    时间: 2009-7-9 11:21
DDE的也可以...或者配置共享...
作者: shane007    时间: 2009-7-9 11:41
引用第1楼firendless于2009-07-09 11:21发表的  :
( ?6 I( }0 n# O6 r" |DDE的也可以...或者配置共享...

3 ?: S3 R8 ^" `& P% g+ `1 IDDE好像是挺老的技术了,win95时代的吧。
作者: firendless    时间: 2009-7-9 11:48
嗯,但是怎么说呢,管道还是最保险和最安全的方法了吧.
作者: shane007    时间: 2009-7-9 11:55
有时间请多来冒泡。




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