在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例Windows系统编程 → VC6.0实现进程控制与通信

VC6.0实现进程控制与通信

Windows系统编程

下载此实例
  • 开发语言:C/C++
  • 实例大小:6.98M
  • 下载次数:26
  • 浏览次数:289
  • 发布时间:2019-12-19
  • 实例类别:Windows系统编程
  • 发 布 人:llfkglsdflkgd
  • 文件格式:.rar
  • 所需积分:2
 相关标签: vc6.0 VC 控制 通信 进程

实例介绍

【实例简介】

1、          在进程A中输入一些字符,点“利用SendMessage发送消息”按钮可将消息发到进程B。

2、          在进程A中输入一些字符,点“写数据到内存映像文件”按钮,然后在进程B中点“从内存映像文件读数据” 按钮可收到消息。


【实例截图】


from clipboard

from clipboard

【核心代码】void CProcessADlg::OnSendmessage() 
{
// TODO: Add your control notification handler code here
CString str="ProcessB"; 
CWnd *pWnd=CWnd::FindWindow(NULL,str); 
if(pWnd) 

COPYDATASTRUCT buf; 
GetDlgItem(IDC_EDIT3)->GetWindowText(m_Msg1);
char * s=new char[m_Msg1.GetLength()]; //m_Msg1为CString类型的变量
s=m_Msg1.GetBuffer(0); 
buf.cbData=strlen(s) 1; 
buf.lpData=s; 
pWnd->SendMessage(WM_COPYDATA,0,(LPARAM)&buf); //传送大量数据要用WM_COPYDATA消息


}

void CProcessADlg::OnWritetopipe() 
{
// TODO: Add your control notification handler code here
  
}

void CProcessADlg::OnWrite() 
{
// TODO: Add your control notification handler code here
//创建内存映像对象
HANDLE hMapping;   
LPSTR lpData;   
hMapping=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,0x200,"MYSHARE");   
if(hMapping==NULL)   
{   
AfxMessageBox("CreateFileMapping() failed.");
return;
}
//将文件的视图映射到一个进程的地址空间上,返回LPVOID类型的内存指针
lpData=(LPSTR)MapViewOfFile(hMapping,FILE_MAP_ALL_ACCESS,0,0,0);   
if(lpData==NULL)   
{   
AfxMessageBox("MapViewOfFile() failed.");
return;
}
GetDlgItem(IDC_EDIT3)->GetWindowText(m_Msg1);
//给这段映像内存写数据
sprintf(lpData,m_Msg1);   
//释放映像内存
UnmapViewOfFile(lpData);   
}

void CProcessADlg::OnCreateB() 
{
// TODO: Add your control notification handler code here
PROCESS_INFORMATION pi;
STARTUPINFO si;
//初始化变量
memset(&si,0,sizeof(si));
si.cb=sizeof(si);
si.wShowWindow=SW_SHOW;
si.dwFlags=STARTF_USESHOWWINDOW;

//打开ProcessB
BOOL fRet=CreateProcess(NULL,
"G:\\OS\\ProcessB\\Debug\\ProcessB.exe",
NULL,
NULL,
FALSE,
NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE,
NULL,
NULL,
&si,
&pi);

if(!fRet)
{//创建失败,显示错误信息
LPVOID lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | 
FORMAT_MESSAGE_FROM_SYSTEM | 
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL );
AfxMessageBox( (LPCTSTR)lpMsgBuf);
LocalFree( lpMsgBuf );

}
else
{
AfxMessageBox("CreateProcess成功");
m_hPro=pi.hProcess;
}
}

void CProcessADlg::OnEndB() 
{
// TODO: Add your control notification handler code here

//判断进程句柄是否合法
if(m_hPro)
{
//根据句柄,终止刚才打开的ProcessB程序
if(!TerminateProcess(m_hPro,0))
{
//终止出现错误,显示错误信息
LPVOID lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | 
FORMAT_MESSAGE_FROM_SYSTEM | 
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL );
AfxMessageBox( (LPCTSTR)lpMsgBuf);
LocalFree( lpMsgBuf );
}
else
{
AfxMessageBox("退出成功");
}
m_hPro=NULL;
}
else
{
AfxMessageBox("m_hPro为空");
}
}

void CProcessADlg::OnExit() 
{
// TODO: Add your control notification handler code here
CDialog::OnCancel();
}

void CProcessADlg::OnShuru() 
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.

// TODO: Add your control notification handler code here
//CString str;
   // GetDlgItem(IDC_EDIT3)->GetWindowText(str);
}


实例下载地址

VC6.0实现进程控制与通信

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

第 1 楼 鲨鱼辣椒Peter 发表于: 2021-10-28 21:26 37
请问这个代码应该如何使用来创建进程

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有1条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警