Windows6 --管道及进程遍历
Windows管道管道分为命名管道、匿名管道
命名管道
命名管道是一个命名的管道服务器和一个或多个管道客户端之间的通信。命名管道的所有实例共享相同的管道名称,但每个实例都有自己的缓冲区和句柄,并为客户端/服务器通信提供单独的管道。一个命名管道链接多个管道客户端
匿名管道-父子进程之间的数据传输(单向传输)
创建: createpipe
读: readfile
写: writefile
获取句柄:GetStdHandle
查看管道是否有数据可读: PeekNamedPipe
于上述结构体中的句柄一一对应
父进程:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748void CParentDlg::OnBnClickedButton1(){ // TODO: 在此添加控件通知处理程序代码 //创建管道 BOOL bRet=CreatePipe(&m_hRead,&m_hWrite,NULL,0); if (!bRet) & ...
Windows5 --进程间通信
Windows进程间通信发送消息一般是自定义消息,使用SendMessage(需要有两个窗口)
同样的先创建一个进程A 用来发送消息 再创建一个进程B 接收消息
将二者放在同一个解决方案下
可以先创建A再添加B
A:发送消息
1234567#define MS_TEST WM_USER+1void CADlg::OnBnClickedButton1(){ HWND hWndB = ::FindWindow(NULL,"B");//获取句柄 ::SendMessage(hWndB,MS_TEST,0x12456789,0x98745612);//发送消息 有两个API这里使用的是sendmessage //sendmessage直到消息被处理后才会返回 会阻塞}
B:接收消息
现在B这添加一个类导向
1234567afx_msg LRESULT CBDlg::OnMsTest(WPARAM wParam, LPARAM lParam){ CString strFmt; strFmt.Format("w:% ...
Windows4 --跨进程使用句柄及内存
Windows1.跨进程使用句柄先创建两个MFC的进程分别为A,B
A:
B:
使用方式
(1)继承方式
父进程打开的句柄继承给子进程使用
父进程的句柄是否继承给子进程使用
判断句柄是否可以被继承(安全属性) 第一个为进程句柄 第二个为线程句柄
若安全属性为true 那么当createprocess为true时句柄会传给子进程 为FALSE时句柄不会传给子进程
但若安全属性为false时 无论createprocess为true还是false都不会传给子进程
A:
12345678910111213141516171819202122232425262728293031ZeroMemory(&si, sizeof(si));si.cb = sizeof(si);ZeroMemory(&pi, sizeof(pi));SECURITY_ATTRIBUTES sa = {};sa.nLength = sizeof(sa);sa.bInheritHandle = TRUE;//进程允许被继承// Start the child process. ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment