windows程序間通訊的4種基本方法

2021-06-18 00:06:11 字數 2536 閱讀 3142

一 利用剪貼簿進行程序間通訊

void cclipboarddlg::onbtnsend() 

}void cclipboarddlg::onbtnrecv() }}

二 利用匿名管道進行程序間通訊

(匿名管道只能在父子程序間通訊)

父程序

void cparentview::onpipecreate() 

startupinfo sui;

zeromemory

(&sui,sizeof(startupinfo));

sui.cb=sizeof(startupinfo);

sui.dwflags=startf_usestdhandles;

sui.hstdinput=hread;

sui.hstdoutput=hwrite;

sui.hstderror=

getstdhandle

(std_error_handle);

process_information pi;

if(!

createprocess

("..\\child\\debug\\child.exe",null,null,null,

true,0,null,null,&sui,&pi))

else

}void cparentview::onpiperead() 

messagebox(buf);

}void cparentview::onpipewrite() 

}子程序

void cchildview::oninitialupdate() 

void cchildview::onpiperead() 

messagebox(buf);

}void cchildview::onpipewrite() 

}三 利用命名管道進行程序間通訊

服務端程序

void cnamedpipesrvview::onpipecreate() 

handle hevent;

hevent=

createevent

(null,true,false,null);

if(!hevent)

}if(wait_failed==

waitforsingleobject

(hevent,infinite)) //等待事件物件變為有訊號狀態

closehandle(hevent);

}void cnamedpipesrvview::onpiperead() 

messagebox(buf);

}void cnamedpipesrvview::onpipewrite() 

}客戶端程序

void cnamedpipecltview::onpipeconnect() 

hpipe=

createfile

("\\\\.\\pipe\\mypipe",generic_read

| generic_write,

0,null,open_existing,file_attribute_normal,null); 

//開啟命名管道

if(invalid_handle_value==hpipe)

}void cnamedpipecltview::onpiperead() 

messagebox(buf);}

void cnamedpipecltview::onpipewrite() }

四 利用郵槽進行程序間通訊

服務端程序

void cmailslotsrvview::onmailslotrecv() 

char buf[100];

dword dwread;

if(!

readfile

(hmailslot,buf,100,&dwread,null)) //郵槽的服務端只能接收資料

messagebox(buf);

closehandle(hmailslot);

}客戶端程序

void cmailslotcltview::onmailslotsend() 

char buf="郵槽測試程式";

dword dwwrite;

if(!

writefile

(hmailslot,buf,strlen(buf)+1,&dwwrite,null)) //郵槽的客戶端只能傳送資料

closehandle(hmailslot);}

跨網路的程序間通訊可用:命名管道和郵槽(郵槽可實現一對多通訊)

郵槽傳送的資料量較小(424位元組),傳送大量資料可採用管道來完成

windows程序間通訊

摘 要 隨著人們對應用程式的要求越來越高,單程序應用在許多場合已不能滿足人們的要求。編寫多程序 多執行緒程式成為現代程式設計的乙個重要特點,在多程序程式設計中,程序間的通訊是不可避免的。microsoft win32 api 提供了多種程序間通訊的方法,全面地闡述了這些方法的特點,並加以比較和分析,...

Windows下程序間通訊

1 程序與程序通訊 2 程序通訊方法 2.1 檔案對映 win32 api中共享記憶體 shared memory 實際就是檔案對映的一種特殊情況。程序在建立檔案對映物件時用0xffffffff來代替檔案控制代碼 handle 就表示了對應的檔案對映物件是從作業系統頁面檔案訪問記憶體,其它程序開啟該...

Windows程序間通訊方式

align center windows程序間通訊方式 align 1 檔案對映 win32 api允許多個程序訪問同一檔案對映物件,各個程序在它自己的位址空間裡接收記憶體的指標。通過使用這些指標,不同程序就可以讀或修改檔案的內容,實現了對檔案中資料的共享。應用程式有三種方法來使多個程序共享乙個檔案...