冒险解谜游戏中文网 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" r
char * ShareP=NULL;
3 \. |; q; O6 p K+ p& O
void 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" G
for (int i=0;i<128;i++)
# l% i2 \/ r5 u U7 }! }8 ~6 S# j J
ShareP
=i;
+ E x5 W% {& k* g/ E
CloseHandle(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 I
DDE好像是挺老的技术了,win95时代的吧。
作者:
firendless
时间:
2009-7-9 11:48
嗯,但是怎么说呢,管道还是最保险和最安全的方法了吧.
作者:
shane007
时间:
2009-7-9 11:55
有时间请多来冒泡。
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2